介绍
Postfix 是一个 MTA(Mail Transfer Agent),用于发送和接收电子邮件的应用程序。在本教程中,我们将安装和配置 Postfix,以便它只能被本地应用程序使用 - 也就是说,那些安装在与 Postfix 相同的服务器上的应用程序。
为什么要这样做?
如果您已经在使用第三方电子邮件提供商来发送和接收电子邮件,那么您当然不需要运行自己的邮件服务器。但是,如果您管理一台云服务器,在该服务器上安装了需要发送电子邮件通知的应用程序,那么运行本地的、仅用于发送的 SMTP 服务器是使用第三方电子邮件服务提供商或运行完整的 SMTP 服务器的良好替代方案。
一个发送电子邮件通知的应用程序的示例是 OSSEC,它将向任何配置的电子邮件地址发送电子邮件警报(请参阅《在 Ubuntu 14.04 上安装和配置 OSSEC 安全通知》)。尽管 OSSEC 或类似的任何其他应用程序可以使用第三方电子邮件提供商的 SMTP 服务器发送电子邮件警报,但它也可以使用本地(仅发送)SMTP 服务器。
这就是您将在本教程中学习如何做的内容:如何安装和配置 Postfix 作为仅发送的 SMTP 服务器。
注意: 如果您的用例是从服务器接收单个地址的通知,那么将电子邮件标记为垃圾邮件并不是一个重要的问题,因为您可以将其列入白名单。
如果您的用例是向潜在的站点用户发送电子邮件,比如消息板注册的确认电子邮件,那么您绝对应该执行步骤 5,这样您服务器的电子邮件更有可能被视为合法。如果您仍然遇到服务器的电子邮件被标记为垃圾邮件的问题,您将需要自行进行进一步的故障排除。
先决条件
请完成以下先决条件。
- Ubuntu 14.04 Droplet
- 完成初始设置。这意味着您应该拥有一个带有
sudo
权限的标准用户帐户 - 拥有一个有效的域名,比如 example.com,指向您的 Droplet
- 服务器的主机名应与此域名或子域名匹配。您可以通过在命令提示符下输入
hostname
来验证服务器的主机名。输出应与您在创建 Droplet 时给出的名称相匹配,比如 example.com
如果所有先决条件都已满足,那么您现在已经准备好进行本教程的第一步了。
步骤 1 — 安装 Postfix
在这一步中,您将学习如何安装 Postfix。安装 Postfix 和其他用于测试电子邮件的程序的最有效方法是通过输入以下命令来安装 mailutils
软件包:
sudo apt-get install mailutils
安装 mailutils 也会导致安装 Postfix,以及一些其他 Postfix 运行所需的程序。在输入该命令后,您将看到类似以下输出:
The following NEW packages will be installed: guile-2.0-libs libgsasl7 libkyotocabinet16 libltdl7 liblzo2-2 libmailutils4 libmysqlclient18 libntlm0 libunistring0 mailutils mailutils-common mysql-common postfix ssl-cert 0 upgraded, 14 newly installed, 0 to remove and 3 not upgraded. Need to get 5,481 kB of archives. After this operation, 26.9 MB of additional disk space will be used. Do you want to continue? [Y/n]
按 ENTER 键进行安装。在安装过程的最后,您将看到一个窗口,其外观与下面的图像完全相同。默认选项是 Internet Site。这是本教程推荐的选项,因此按 TAB 键,然后按 ENTER 键。
!从菜单中选择 Internet Site,然后按 TAB 键选择 ,然后按 ENTER 键
之后,您将看到另一个窗口,其外观与下面的图像相同。System mail name 应与您在创建 Droplet 时分配给它的名称相同。如果显示的是子域名,比如 mars.example.com,请将其更改为 example.com。完成后,按 TAB 键,然后按 ENTER 键。
!输入您的域名,然后按 TAB 键选择 ,然后按 ENTER 键
安装成功后,继续进行第 2 步。
步骤 2 — 配置 Postfix
在这一步中,您将学习如何配置 Postfix,以便它只处理来自运行它的服务器的电子邮件发送请求,也就是说,只能来自 localhost。为了实现这一点,需要将 Postfix 配置为仅在 loopback 接口 上监听,这是服务器用于内部通信的虚拟网络接口。要进行更改,使用 nano 编辑器打开主 Postfix 配置文件。
sudo nano /etc/postfix/main.cf
打开文件后,向下滚动,直到看到以下代码块中显示的条目。
mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all
将读取 inet_interfaces = all
的行更改为 inet_interfaces = loopback-only
。完成后,文件的相同部分现在应该如下所示:
mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = loopback-only
您也可以使用 localhost
替换 loopback-only
,这样修改后的部分也可以如下所示:
mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = localhost
编辑文件后,保存并关闭它(按下 CTRL+X,然后按 Y,然后按 ENTER)。之后,通过输入以下命令重新启动 Postfix:
sudo service postfix restart
步骤 3 —— 测试 SMTP 服务器是否能发送邮件
在这一步中,您将了解如何测试 Postfix 是否能够向任何外部电子邮件账户发送邮件。您将使用 mail
命令,该命令是 Step 1 中安装的 mailutils
软件包的一部分。
要发送测试邮件,请输入:
echo "This is the body of the email" | mail -s "This is the subject line" user@example.com
在进行您自己的测试时,您可以使用原样的正文和主题行文本,也可以根据自己的喜好进行更改。但是,在 user@example.com 的位置,请使用有效的电子邮件地址,其中域部分可以是 gmail.com、fastmail.com、yahoo.com 或您使用的任何其他电子邮件服务提供商。
现在检查您发送测试消息的电子邮件地址。
您应该在收件箱中看到该消息。如果没有,请检查您的垃圾邮件文件夹。
注意: 使用此配置,您发送的测试邮件中 From 字段的地址将是 sammy@example.com,其中 sammy 是您的 Linux 用户名,域部分是服务器的主机名。如果您更改用户名,From 地址也将更改。
步骤 4 —— 转发系统邮件
我们要设置的最后一件事是转发,以便您可以将发送到系统上的 root 邮件转发到您的个人外部电子邮件地址。
要配置 Postfix,使系统生成的邮件将发送到您的电子邮件地址,您需要编辑 /etc/aliases
文件。
sudo nano /etc/aliases
在默认安装的 Ubuntu 14.04 上,文件的完整内容如下所示:
# See man 5 aliases for format postmaster: root
通过该设置,系统生成的邮件将发送到 root 用户。您要做的是编辑它,以便将这些邮件重定向到您的电子邮件地址。为此,请编辑文件,使其如下所示:
# See man 5 aliases for format postmaster: root root: sammy@example.com
将 sammy@example.com 替换为您的个人电子邮件地址。完成后,保存并关闭文件。要使更改生效,请运行以下命令:
sudo newaliases
您现在可以通过以下命令向 root 账户发送电子邮件来测试它是否有效:
echo "This is the body of the email" | mail -s "This is the subject line" root
您应该会在您的电子邮件地址收到该邮件。如果没有,请检查您的垃圾邮件文件夹。
(可选)步骤 5 —— 保护您的域免受垃圾邮件的侵害
在这一步中,您将获得一些文章的链接,以帮助您保护您的域免受被用于发送垃圾邮件的侵害。这是一个可选但强烈推荐的步骤,因为如果配置正确,这将使使用您域名作为发件人地址发送垃圾邮件变得困难。
进行这些额外的配置步骤还将使常见的邮件提供商更有可能将来自您服务器的邮件视为合法邮件,而不是标记为垃圾邮件。
- 如何使用 SPF 记录防止欺骗和提高电子邮件可靠性
- 如何在 Debian Wheezy 上安装和配置 DKIM 与 Postfix
- 此外,请确保服务器的 PTR 记录与邮件服务器在发送消息时使用的主机名匹配。在 DigitalOcean,您可以通过在控制面板中更改 Droplet 的名称来更改 PTR 记录
尽管第二篇文章是为 Debian Wheezy 编写的,但相同的步骤也适用于 Ubuntu 14.04。