使用 Postfix 设置只发送邮件的邮件服务

使用 Postfix 设置只发送邮件的邮件服务

Chris Yue One comment
Posts

在很多时候,我们在服务器上运行一些定时任务或者服务,需要通过邮件的方式看到一些任务或者服务的运行状态,那么我们首先需要一个邮件服务,并且因为我们没有收邮件的需求,最好只发不收。这里我将使用 Ubuntu 作为例子,分享如何通过 Postfix 设置这样需求的邮件服务。

安装 Postfix

运行:

不出意外,安装途中会提示你选择服务器的用途(Internet site, Internet with smarthost, Satellite system, Local only),我的服务器是运行在 Internet 上的,所以毫不犹选择第一个,各位可以根据自己的使用情况自行选择。这个步骤应该只是帮助生成相应的配置文件,所以选错也没关系之后还可以改。

选择了 Internet site 之后,会再次要求输入本机的域名。这里随便填一个就行,当然最好是此服务器对应的真实的域名。这个设置有什么用稍后再说。

配置 Postfix

在 Ubuntu 下,配置文件的位置在 /etc/postfix/main.cf

打开此文件,不出意外应该可以看到

inet_interfaces 设置的是可以从什么地方接收邮件,因为我们只发不收,所以 all 肯定要改,all 的意思是接受网上所有发来的邮件。

这里我们将 all 改成 loopback-only,至于这个值的具体意义,目前还没有找到能让我明白的解释,暂时理解成内网吧。

inet_interfaces 也可以设置成具体的 IP,所以这里设置成 127.0.0.1 或者 localhost 也是可以的

此时重启 Postfix 服务,就可以尝试给自己发一封邮件了(假如当前登录用户是 chris)

不出意外,命令行会出现提示“You have new mails”的提示。安装了 mailutils 之后,本地就会有收件箱,收件箱的位置应该在 /var/spool/mail/chris,我们可以用 cat 命令查看邮件:

这里我们就可以发现一个有趣的事情:发送邮件并没有强制规定收件地址必须是 username@hostname 的格式,直接发给 username 也是可以的,只不过只有本机账号相互之间可以这么发。

设置转发

当然,我们肯定还是想让内容直接发到我们常用邮箱里,比如 Gmail。其实这也很好实现,设置转发即可。

编辑/etc/aliases

不出意外应该可以看到一行内容:postmaster: root

从内容也可以推测出,这里设置的是默认发送邮件的账号。不用管这个设置,我们再添加我们需要转发的账号,添加如下设置:

重新载入aliases:

这样当 chris 账号收到邮件时,会立马转发给 chris@example.com

其他可选的设置

假如服务器发送邮件的账号是 root,而这台机器的 hostname 是 localhost,其实完全的发送账号是 root@localhost。但有些邮箱系统,会检查邮件发送服务所在的 IP 是否跟发件人的 hostname 部分所指向的 IP 是否一致,如果不一致,会给收邮件的用户做出提示,并且有可能直接归到垃圾文件。

很多系统默认的 hostname 都是 localhost,所以首先我们应该先更正 hostname。以 example.com 为例子,在 Ubuntu,需要设置 /etc/hostname 里的内容为 example.com,在 /etc/hosts 里也建议将本地 IP 设置为 example.com,本地 IP 不仅仅指 127.0.0.1,也包含局域网的 IP,出于管理需求。

重启系统之后会采用新的 hostname。在 Ubuntu 里也可以不需要重启,直接用 hostname 命令更改:

需要注意的是,hostname 命令只是临时修改,如果不改 hostname 配置文件,系统重启之后就会恢复配置文件指定的 hostname

使用 Postfix 设置只发送邮件的邮件服务 by Chris Yue is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

微信赞赏码

文章不错,我要帮站长分担建站费!
天使投赏人

One comment

zj

十月 9, 2018 在 8:02 下午

试试

发表评论

÷ 10 = one