如何在Ubuntu 16.04上安装并配置Postfix作为只发送SMTP服务器

提供:ZStack云计算

内容介绍

Postfix是一套邮件传输代理(简称MTA),用于发送并接收邮件。在本教程中,我们将安装并配置Postfix,并利用它仅为本地应用发送邮件——所谓本地应用,即与Postfix安装于同一服务器的应用。

为什么有这样的需求?

如果大家已经在使用第三方邮件服务方案发送并收取邮件,则无需运行自己的邮件服务器。然而,如果大家管理一套云服务器,且其中安装的应用需要发送邮件通知,那么运行一套本地只发送SMTP服务器则更为理想。

在本教程中,我们将了解如何安装并配置Postfix以作为只发送SMTP服务器。

先决条件

要完成教程,大家需要:

  • 一套Ubuntu 16.04 Droplet,具体参阅Ubuntu 16.04初始设置指南,其中包括创建一个拥有sudo权限的非root用户。
  • 一个指向服务器的有效域名,例如example.com,具体请参阅主机名称指南

请注意,我们的服务器主机名称应当与域名或者子域名相匹配。大家可以在命令提示中输入hostname验证服务器的主机名称。输出结果应当与Droplet创建时我们为其提供的名称相匹配。

第一步——安装Postfix

在此步骤中,我们将了解如何安装Postfix。在这里,我们选择最为高效的安装方式,即安装mailutils软件包。

首先更新该软件包数据库:

  • sudo apt-get update

安装mailtuils将安装Postfix以及其它一些Postfix所必需的程序。

  • sudo apt install mailutils

在安装过程末尾,大家会看到如下图所示的屏幕,其中默认选项为Internet Site。本教程亦推荐该默认选项,因此按下TAB再按回车。

在此之后,大家会看到另一个容器,如下所示。System邮件名称应该与我们在创建服务器时为其分配的名称保持一致。如果其显示subdomain.example.com这样的子域名,则将其变更为example.com。完成后,按下TAB再按回车。

第二步——配置Postfix

在这里,我们需要配置Postfix,要求其仅处理运行所在服务器上的邮件,即localhost。

Postfix需要在配置中监听loopbackinterface,即该服务器用于内部通信的虚拟网络接口。要实现变更,打开主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。

  • sudo systemctl restart postfix

第三步——测试SMTP服务器

在这里,我们将测试Postfix是否能够利用mail命令向外部邮件账户发送邮件。

发送测试邮件:

  • echo “This is the body of the email” | mail -s “This is the subject line” your_email_address

在执行测试时,大家可能需要使用对其中的对应部分进行调整,从而满足自己的实际情况。

现在检查发送测试消息的目标邮箱地址。大家应该能够在收件箱中看到对应消息——如果没有,请检查垃圾邮件箱。

注意,在此配置中,From字段内的地址应为[email protected],其中sammy为Linux用户名,而域名部分则为该服务器的主机名称。如果大家变更用户名,则其中的From地址也应当对应变更。

第四步——转发系统邮件

最后设置转发机制,这样我们就能够将指向系统root的邮件转发至自己的个人外部邮箱了。

要实现这一功能,我们需要编辑/etc/aliases文件。

  • sudo nano /etc/aliases

此文件的默认内容如下:

/etc/aliases

# See man 5 aliases for format
postmaster:    root

在此设定下,系统生成的邮件会被发送至root用户。这里我们需要将其重新路由至自己的邮箱,变更后为:

/etc/aliases

# See man 5 aliases for format
postmaster:    root
root:          your_email_address

运行以下命令使变更生效:

  • sudo newaliases

再次发送邮件以进行测试:

  • echo “This is the body of the email” | mail -s “This is the subject line” root

大家应该能够正常收取到邮件。

总结

这就是Postfix只发送邮件服务器的全部设置流程。大家可能还需要采取一些额外步骤来保护自己的域名免受垃圾邮件打扰。

如果大家在单一地址接收来自服务器的通知,那么大家可能需要将其纳入白名单以避免其被列为垃圾邮件。不过,如果大家希望向潜在站点用户发送邮件,则应当设置SPF记录及以确保服务器邮件合法性。

  • 如何利用SPF记录避免屏蔽及提升邮件可靠性
  • 如何在Debian Wheezy上安装并配置DKIM以配合Postfix,其操作步骤与Ubuntu 16.04一致。

如果配置正确,这些额外的步骤能够让我们的服务器邮件被更多邮件服务视为合法。

本文来源自DigitalOcean Community。英文原文:How to Install and Configure Postfix as a Send-Only SMTP Server on Ubuntu 16.04 By finid

翻译:diradw

你可能感兴趣的:(如何在Ubuntu 16.04上安装并配置Postfix作为只发送SMTP服务器)