介绍
Postfix 是一个 邮件传输代理 (MTA),一个用于发送和接收电子邮件的应用程序。 在本教程中,我们将安装和配置 Postfix,以便它只能用于本地应用程序发送电子邮件——即安装在与 Postfix 相同的服务器上的应用程序。
你为什么想这么做?
如果您已经在使用第三方电子邮件提供商来发送和接收电子邮件,则无需运行自己的邮件服务器。 但是,如果您管理的云服务器上安装了需要发送电子邮件通知的应用程序,则运行本地的、仅发送的 SMTP 服务器是使用第三方电子邮件服务提供商或运行成熟的 SMTP 服务器的好选择.
在本教程中,您将学习如何将 Postfix 安装和配置为只发送 SMTP 服务器。
先决条件
要遵循本教程,您将需要:
- 一个使用 Ubuntu 16.04 初始设置指南 设置的 Ubuntu 16.04 Droplet,包括创建 sudo 非 root 用户
- 指向您的服务器的有效域名,例如
example.com
。 您可以按照 这个主机名教程 进行设置
请注意,您的服务器的主机名应与此域或子域匹配。 您可以通过在命令提示符处键入 hostname
来验证服务器的主机名。 输出应与您在创建 Droplet 时为其指定的名称匹配。
第 1 步 — 安装 Postfix
在此步骤中,您将学习如何安装 Postfix。 安装 Postfix 和测试电子邮件所需的其他程序的最有效方法是安装 mailutils
包。
首先,更新包数据库:
sudo apt-get update
最后,安装 Postfix。 安装 mailtuils
将安装 Postfix 以及 Postfix 运行所需的一些其他程序。
sudo apt install mailutils
在安装过程即将结束时,您将看到一个与下图中完全相同的窗口。 默认选项是 Internet 站点。 这是本教程的推荐选项,因此按 TAB
,然后按 ENTER
。
之后,您将获得另一个窗口,就像下一张图片中的窗口一样。 系统邮件名称 应该与您在创建服务器时分配给服务器的名称相同。 如果它显示像 subdomain.example.com
这样的子域,请将其更改为 example.com
。 完成后,按 TAB
,然后按 ENTER
。
安装成功后,进行第二步。
第 2 步 — 配置 Postfix
在这一步中,您将了解如何配置 Postfix 以处理仅从运行它的服务器发送电子邮件的请求,即来自 localhost。
为此,需要将 Postfix 配置为仅侦听 环回接口 ,这是服务器用于内部通信的虚拟网络接口。 要进行更改,请使用 nano
或您喜欢的文本编辑器打开主 Postfix 配置文件。
sudo nano /etc/postfix/main.cf
打开文件后,向下滚动,直到看到以下部分。
/etc/postfix/main.cf
. . . mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all . . .
将读取 inet_interfaces = all
的行更改为 inet_interfaces = loopback-only
。
/etc/postfix/main.cf
. . . mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = loopback-only . . .
您需要修改的另一个指令是 mydestination
,它用于指定通过 local_transport
邮件传递传输传递的域列表。 默认情况下,这些值与以下类似:
/etc/postfix/main.cf. . . mydestination = $myhostname, example.com, localhost.com, , localhost . . .
该场景的 推荐默认值 在下面的代码块中给出,因此请修改您的以匹配:
/etc/postfix/main.cf. . . mydestination = $myhostname, localhost.$mydomain, $mydomain . . .
保存并关闭文件。
如果您在单个服务器上托管多个域,则其他域也可以使用 mydestination
指令传递给 Postfix。 但是,以可扩展且不会出现问题的方式配置 Postfix 涉及超出本文范围的其他配置。
最后,重启 Postfix。
sudo systemctl restart postfix
第 3 步 — 测试 SMTP 服务器
在此步骤中,您将测试 Postfix 是否可以使用 mail
命令向外部电子邮件帐户发送电子邮件,该命令是在步骤 1 中安装的 mailutils
软件包的一部分。
要发送测试电子邮件,请键入:
echo "This is the body of the email" | mail -s "This is the subject line" your_email_address
在执行您自己的测试时,您可以按原样使用正文和主题行文本,或根据自己的喜好更改它们。 但是,请使用有效的电子邮件地址代替 your_email_address
。 域部分可以是 gmail.com
、fastmail.com
、yahoo.com
或您使用的任何其他电子邮件服务提供商。
现在检查您发送测试消息的电子邮件地址。 您应该会在收件箱中看到该消息。 如果没有,请检查您的垃圾邮件文件夹。
请注意,使用此配置,您发送的测试电子邮件的 From 字段中的地址将是 sammy@example.com
,其中 sammy 是您的 Linux 用户名,域部分是服务器的主机名。 如果您更改用户名,From 地址也会更改。
第 4 步 — 转发系统邮件
我们要设置的最后一件事是转发,因此您将通过您的个人外部电子邮件地址将电子邮件发送到系统上的 root。
要配置 Postfix 以便将系统生成的电子邮件发送到您的电子邮件地址,您需要编辑 /etc/aliases
文件。
sudo nano /etc/aliases
Ubuntu 16.04 的默认安装文件的完整内容如下:
/etc/别名
# See man 5 aliases for format postmaster: root
使用该设置,系统生成的电子邮件将发送给 root 用户。 您要做的是对其进行编辑,以便将这些电子邮件重新路由到您的电子邮件地址。 为此,请编辑该文件,使其内容为:
/etc/aliases# See man 5 aliases for format postmaster: root root: your_email_address
将 your_email_address
替换为您的个人电子邮件地址。 完成后,保存并关闭文件。 要使更改生效,请运行以下命令:
sudo newaliases
您现在可以通过使用以下命令向 root 帐户发送电子邮件来测试它是否有效:
echo "This is the body of the email" | mail -s "This is the subject line" root
您应该在您的电子邮件地址收到电子邮件。 如果没有,请检查您的垃圾邮件文件夹。
结论
这就是使用 Postfix 设置只发送电子邮件服务器所需的全部内容。 您可能需要采取一些额外的措施来保护您的域免受垃圾邮件发送者的侵害。
如果您的用例是通过单个地址从您的服务器接收通知,那么被标记为垃圾邮件的电子邮件是一个主要问题,因为您可以将它们列入白名单。 但是,如果您的用例是向潜在的站点用户发送电子邮件(例如用于留言板注册的确认电子邮件),您绝对应该设置 SPF 记录和 DKIM,以便您的服务器的电子邮件更有可能被视为合法的。
- 如何使用 SPF 记录来防止欺骗和提高电子邮件的可靠性
- 如何在 Debian Wheezy 上使用 Postfix 安装和配置 DKIM 虽然这篇文章是为 Debian Wheezy 编写的,但相同的步骤也适用于 Ubuntu 16.04。
如果配置正确,则很难使用看似来自您的域的地址发送垃圾邮件。 执行这些额外的配置步骤还将使普通邮件提供商更有可能将来自您服务器的电子邮件视为合法电子邮件。