介绍
Postfix是一种邮件传输代理 (MTA),一种用于发送和接收电子邮件的应用程序。 在本教程中,您将安装和配置Postfix,以便它可以仅用于本地应用程序发送电子邮件 - 即与Postfix安装在同一服务器上的电子邮件。
你为什么想这么做?
如果您已使用第三方电子邮件提供商发送和接收电子邮件,则无需运行自己的邮件服务器。 但是,如果您管理已安装需要发送电子邮件通知的应用程序的云服务器,则运行本地仅发送SMTP服务器是使用第三方电子邮件服务提供商或运行完整SMTP的良好替代方案服务器。
在本教程中,您将在Debian 9上安装和配置Postfix作为仅发送SMTP服务器。
先决条件
要学习本教程,您需要:
一个Debian 9服务器,使用Debian 9初始服务器设置教程和sudo非root用户进行设置。
一个有效的域名,例如example.com ,指向您的服务器。 您可以按照以下有关在DigitalOcean上管理DNS托管的指南进行设置。
请注意,您服务器的主机名应与您的域或子域匹配。 您可以通过在命令提示符下键入hostname
来验证服务器的主机hostname
。 输出应与创建服务器时为服务器命名的名称相匹配。
第1步 - 安装Postfix
在此步骤中,您将学习如何安装Postfix。 您将需要两个包: mailutils
,其中包括Postfix功能所需的程序,以及postfix
本身。
首先,更新包数据库:
sudo apt update
接下来,安装mailtuils
:
sudo apt install mailutils
最后,安装postfix
:
sudo apt install postfix
在安装过程即将结束时,您将看到一个类似于下图中的窗口的窗口。 默认选项是Internet Site 。 这是本教程的推荐选项,所以按TAB
ENTER
,然后按ENTER
。
之后,您将获得另一个窗口,就像下一个图像中的窗口一样。 系统邮件名称应与创建服务器时分配给服务器的名称相同。 如果它显示子域名如subdomain.example.com
,请将其更改为example.com
。 完成后,按TAB
ENTER
,然后按ENTER
。
您现在已安装Postfix,并准备修改其配置设置。
第2步 - 配置Postfix
在此步骤中,您将配置Postfix以处理仅从运行它的服务器(即从localhost
发送电子邮件的请求。
为此,需要将Postfix配置为仅监听环回接口 ,即服务器用于内部通信的虚拟网络接口。 要进行更改,请使用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
. . .
您需要修改的另一个指令是mydestination
,用于指定通过local_transport
邮件传递传输传递的域列表。 默认情况下,值类似于:
/etc/postfix/main.cf. . .
mydestination = $myhostname, example.com, localhost.com, , localhost
. . .
此指令的建议默认值在下面的代码块中给出,因此请修改以匹配:
/etc/postfix/main.cf. . .
mydestination = $myhostname, localhost.$your_domain, $your_domain
. . .
保存并关闭文件。
注意:如果您在一台服务器上托管多个域,则其他域也可以使用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
或您使用的任何其他电子邮件服务提供商。
现在,检查发送测试邮件的电子邮件地址。 您应该在收件箱中看到该消息。 如果没有,请检查您的垃圾邮件文件夹。
请注意,使用此配置,您发送的测试电子邮件的“ 发件人”字段中的地址将为sammy @ example.com
,其中sammy是您的Linux用户名,域是服务器的主机名。 如果您更改了用户名,则发件人地址也会更改。
第4步 - 转发系统邮件
我们要设置的最后一件事是转发,因此您将通过个人外部电子邮件地址将电子邮件发送到系统上的root用户 。
要配置Postfix以便系统生成的电子邮件将发送到您的电子邮件地址,您需要编辑/etc/aliases
文件:
sudo nano /etc/aliases
Debian 9默认安装文件的全部内容如下:
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
postmaster: root
设置可确保将系统生成的电子邮件发送给root用户。 您想要编辑这些设置,以便将这些电子邮件重新路由到您的电子邮件地址。 要完成此操作,请编辑该文件,使其显示为:
mailer-daemon: postmaster
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,以便您的服务器电子邮件更有可能被视为合法。
如果配置正确,这些步骤会使垃圾邮件的发送地址难以发送,该地址似乎来自您的域。 采取这些额外的配置步骤还将使普通邮件提供商更有可能将来自您服务器的电子邮件视为合法邮件。