如何在 Ubuntu 18.04 上安装和配置 Postfix

介绍

Postfix是一个流行的开源邮件传输代理(MTA),可以用于在Linux系统上路由和发送电子邮件,据估计,互联网上大约25%的公共邮件服务器运行Postfix。

在本指南中,我们将教你如何在Ubuntu 18.04服务器上快速起床和运行Postfix。

前提条件

要遵循本指南,您应该可以访问具有sudo特权的非根用户,您可以遵循我们的 Ubuntu 18.04初始服务器设置指南来创建必要的用户。

为了正确配置 Postfix,您需要一个完全合格的域名指向您的 Ubuntu 18.04 服务器. 您可以通过遵循 此指南来找到帮助设置您的域名与 DigitalOcean. 如果您打算接受邮件,您需要确保您有一个 MX 记录指向您的邮件服务器。

对于本教程的目的,我们将假设您正在配置一个具有mail.example.com的FQDN的主机。

步骤 1 - 安装 Postfix

Postfix 包含在 Ubuntu 的默认存储库中,因此安装很简单。

首先,更新您的本地apt包缓存,然后安装软件. 我们将将DEBIAN_PRIORITY=low环境变量传入我们的安装命令,以便回答一些额外的提示:

1sudo apt update
2sudo DEBIAN_PRIORITY=low apt install postfix

使用以下信息来正确填写您的提示,适用于您的环境:

  • ** 邮件配置的一般类型? ** : 为此,我们将选择** 互联网网站** ,因为这符合我们的基础设施需求。 这是仅给出地址的账户部分时用于构建有效电子邮件地址的基础域. 例如,我们的服务器的主机名是mail.example.com',但我们可能想要将系统邮件名设置为example.com',这样,鉴于用户名user1',Postfix将使用地址[email protected]'. *** Root和邮政总收信人** : 这是Linux帐户,将发送邮件给root'和postmaster'。 用你的主要账户来做这个 就我们而言,** Sammy** . *** 接受邮件的其他目的地** : 这定义了此 Postfix 实例将接受的邮件目的地 。 如果您需要添加此服务器将负责接收的任何其他域, 请添加这些域, 否则, 默认值应该效果良好 。
  • ** 邮件队列中的同步更新 ? ** : 由于您可能使用有日记的文件系统, 请接受 本地网络** : 这是您所配置的邮件服务器用于转发信件的网络列表 。 默认应适用于大多数情况。 如果您选择修改, 请确保对于网络范围有非常严格的限制 。
  • ** Mailbox 大小限制 ** : 这可以用来限制消息的大小. 设置为"0"可禁用任何大小限制.
  • ** 本地地址扩展字符** : 此字符可用于将地址的正则部分与扩展部分相分离(用于创建动态化名).
  • ** 要使用的互联网协议** :选择是否限制Postfix支持的IP版本. 我们来挑"所有"来做我们的目的。

要明确的是,以下是我们将为本指南使用的设置:

  • 一般的邮件配置类型? :互联网网站
  • 系统邮件名称 : example.com (不是 mail.example.com)
  • 根和邮件主管邮件收件人 : sammy
  • 其他目的地接受邮件 : $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • 强制同步更新邮件队列? : No
  • 本地网络 : 127.0.0.0/8 [ffffffff:127.0.0.0.0]/104 [::1]/128
  • 邮箱大小限制 : 0
  • **本地地址扩展字符

如果您需要返回重新调整这些设置,您可以通过键入这样做:

1sudo dpkg-reconfigure postfix

提示将与您之前的响应预先填充。

当你完成时,我们现在可以做更多的配置来设置我们的系统,就像我们想要的。

步骤 2 — Tweak Postfix 配置

接下来,我们可以调整一些包未提示我们的设置。

首先,我们可以设置邮箱. 我们将使用 Maildir 格式,该格式将消息分为单个文件,然后根据用户的行动在目录之间移动。

我们将将home_mailbox变量设置为Maildir/,在用户的家庭目录中创建一个名称下的目录结构。

1sudo postconf -e 'home_mailbox= Maildir/'

接下來,我們可以設定「virtual_alias_maps」表的位置. 此表將任意的電子郵件帳戶映射為 Linux 系統帳戶. 我們將在「/etc/postfix/virtual」下創建此表。

1sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

步骤 3 — 地图邮件地址到 Linux 帐户

接下来,我们可以设置虚拟地图文件. 在文本编辑器中打开文件:

1sudo nano /etc/postfix/virtual

虚拟代码地图表使用一个非常简单的格式. 在左侧,你可以列出任何你想接受电子邮件的地址。

例如,如果您想接受[email protected][email protected]的电子邮件,并希望这些电子邮件发送给sammy Linux 用户,您可以这样设置您的文件:

1[label /etc/postfix/virtual]
2[email protected] sammy
3[email protected] sammy

将所有地址转到相应的服务器帐户后,保存并关闭文件。

我们可以通过键入应用地图:

1sudo postmap /etc/postfix/virtual

重新启动 Postfix 流程,以确保所有更改都已应用:

1sudo systemctl restart postfix

第4步:调整防火墙

如果您正在运行 UFW 防火墙,如初始服务器设置指南所配置,我们将不得不允许 Postfix 的例外。

您可以通过键入允许连接到服务:

1sudo ufw allow Postfix

Postfix 服务器组件已安装并准备好,接下来,我们将设置一个可以处理 Postfix 将处理的邮件的客户端。

步骤 5 — 设置环境以匹配邮件位置

在我们安装客户端之前,我们应该确保我们的邮件环境变量设置正确。

为了使变量设置,无论您如何访问您的帐户(通过ssh,su,su -,sudo,等等),我们需要将变量设置在几个不同的位置。

要将变量添加到这些文件中,键入:

1echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

要将变量读入当前会话中,您可以输入 /etc/profile.d/mail.sh 文件:

1source /etc/profile.d/mail.sh

步骤 6 – 安装和配置邮件客户端

为了与发送的邮件进行交互,我们将安装s-nail包,这是一个BSDxmail客户端的变体,它具有丰富的功能,可以正确处理Maildir格式,并且大多是向后兼容的。

要安装s-nail包,键入:

1sudo apt install s-nail

我们应该调整几个设置。在您的编辑器中打开 /etc/s-nail.rc 文件:

1sudo nano /etc/s-nail.rc

向文件的底部,添加以下选项:

1[label /etc/s-nail.rc]
2. . .
3set emptystart
4set folder=Maildir
5set record=+sent

它还会将Maildir目录设置为内部文件夹变量,然后使用此来创建一个发送mbox文件,用于存储发送邮件。

保存并关闭文件,当你完成。

步骤 7 – 初始化 Maildir 并测试客户端

现在,我们可以测试客户。

初始化目录结构

在我们的家庭目录中创建 Maildir 结构的最简单的方法是发送电子邮件给我们自己. 我们可以用s-nail命令来做到这一点.因为发送文件只有在 Maildir 被创建后才可用,所以我们应该禁用在我们的初始电子邮件中写到它。

将电子邮件发送到s-nail命令,以便将您的 Linux 用户标记为收件人:

1echo 'init' | s-nail -s 'init' -Snorecord sammy

你可以得到以下答案:

1[secondary_label Output]
2Can't canonicalize "/home/sammy/Maildir"

这是正常的,只能在发送这个第一个消息时出现,我们可以检查通过搜索我们的 ~/Maildir 目录来确保目录被创建:

1ls -R ~/Maildir

您应该看到目录结构已经创建,并且新消息文件位于~/Maildir/new目录中:

 1[secondary_label Output]
 2/home/sammy/Maildir/:
 3cur new tmp
 4
 5/home/sammy/Maildir/cur:
 6
 7/home/sammy/Maildir/new:
 81463177269.Vfd01I40e4dM691221.mail.example.com
 9
10/home/sammy/Maildir/tmp:

看来我们的邮件已经交付了。

与客户端管理邮件

使用客户端来检查您的邮件:

1s-nail

你应该看到你的新消息等待:

1[secondary_label Output]
2s-nail version v14.8.6. Type ? for help.
3"/home/sammy/Maildir": 1 message 1 new
4>N 1 [email protected] Wed Dec 31 19:00 14/369 init

只需点击ENTER即可显示您的消息:

 1[secondary_label Output]
 2[-- Message 1 -- 14 lines, 369 bytes --]:
 3From [email protected] Wed Dec 31 19:00:00 1969
 4Date: Fri, 13 May 2016 18:07:49 -0400
 5To: [email protected]
 6Subject: init
 7Message-Id: <[email protected]>
 8From: [email protected]
 9
10init

您可以通过键入h返回消息列表,然后键入ENTER:

1h
1[secondary_label Output]
2s-nail version v14.8.6. Type ? for help.
3"/home/sammy/Maildir": 1 message 1 new
4>R 1 [email protected] Wed Dec 31 19:00 14/369 init

由于这个消息不太有用,我们可以用d删除它,然后用ENTER删除它:

1d

停止返回终端,键入q,然后ENTER:

1q

向客户发送邮件

您可以通过在文本编辑器中键入消息来测试发送邮件:

1nano ~/test_message

内部,输入您想发送电子邮件的文本:

1[label ~/test_message]
2Hello,
3
4This is a test. Please confirm receipt!

使用cat命令,我们可以将消息引导到s-nail进程中,这将作为您的Linux用户的默认方式发送消息,您可以用-r旗调节From字段,如果您想将该值更改为其他东西:

1cat ~/test_message | s-nail -s 'Test email subject line' -r from_field_account [email protected]

上面的选项是:

  • -s:电子邮件
  • -r的主题行: 可选更改电子邮件的字段. 默认情况下,您已登录的Linux用户将被用来填写此字段。 -r选项允许您将此更改。
  • [email protected]: 将电子邮件发送给的帐户. 将此更改为您可以访问的有效帐户。

您可以在您的s-nail客户端中查看发送的消息. 通过键入重新启动互动客户端:

1s-nail

接下来,通过键入查看您发送的消息:

1file +sent

您可以使用相同的命令来管理发送邮件。

结论

你现在应该在 Ubuntu 18.04 服务器上配置 Postfix. 管理电子邮件服务器对于初创管理员来说可能是一个艰难的任务,但有了这个配置,你应该有基本的 MTA 电子邮件功能来帮助你开始。

Published At
Categories with 技术
comments powered by Disqus