Postfix是流行的开源邮件传送代理(MTA),用来发送邮件和从一个MTA获取发给某个用户地址的e-mail消息。互联网上大约25%的邮件服务器使用Postfix。
本文记录了在Ubuntu 16.04上安装配置Postfix的步骤。
要求:
有root权限(sudo)
一个指向服务器的FQDN;我以mail.topspeedsnail.com为例
#1 安装Postfix
由于Postfix在Ubuntu的默认软件仓库中,所以安装它极为简单。
$ sudo apt update
$ sudo apt install postfix
安装过程中会让你回答一系列问题:
General type of mail configuration?:选择 Internet Site
System mail name:这是构建邮箱地址的基本域名;例如我的hostname是mail.topspeedsnail.com,但是我也许会把System mail name设置为topspeedsnail.com,这样如果给定一个用户名 testuser,Postfix会构建邮箱testuser@topspeedsnail.com。
Root and postmaster mail recipient:这是一个Linux用户,用来转发邮件到root@和postmaster@。使用你主要的Linux账户(我使用snail)。
Other destinations to accept mail for:定义接受的邮件目标;如果你要添加其他域名,Postfix会负责接收。我使用默认设置。
Force synchronous updates on mail queue?:如果你使用journaled文件信息,选择No
Local networks:配置邮件中继使用的网络,在大多数情况下默认配置就可以。
Mailbox size limit:限制消息的大小;如果设置为0,不限制大小。
Local address extension character:分割邮箱地址和扩展的分隔符(用来创建动态别名)。
Internet protocols to use:选择All就可以
上面的这些选项是可以重新配置的:
$ sudo dpkg-reconfigure postfix
#2 配置Postfix
更改一些安装时没有设置的选项。
设置mailbox,两个选项:
Maildir:把不同消息存到当个文件中,根据用户的操作在目录间移动
mbox:把所有消息保存到单一的文件中
设置home_mailbox;邮件保存到~/Maildir目录:
$ sudo postconf -e 'home_mailbox= Maildir/'
设置virtual_alias_maps:
$ sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
映射邮件地址->Linux用户:
$ sudo vim /etc/postfix/virtual
虚拟别名映射表的格式非常简单,左边邮件地址,空格,然后是要递送邮件的Linux用户。例如,如果你想接收contact@topspeedsnail.com和admin@topspeedsnail.com地址的邮件,并且想把这些邮件发给Linux snail用户,那么文件内容如下:
contact@example.com snail
admin@example.com snail
是上面的映射生效:
$ sudo postmap /etc/postfix/virtual
重启Postfix服务:
$ sudo systemctl restart postfix
#3 配置防火墙
如果你使用了防火墙,不要忘了设置防火墙规则。
例如UFW:
$ sudo ufw allow Postfix
$ sudo ufw allow 25
$ sudo ufw allow 143
$ sudo ufw allow 993
$ sudo ufw allow 110
$ sudo ufw allow 995
#4 设置环境变量
$ echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh
$ source /etc/profile.d/mail.sh
#5 安装Mail客户端
为了能够和递送的邮件进行交互,我安装s-nail:
$ sudo apt install s-nail
配置s-nail:
$ sudo vim /etc/s-nail.rc
在文件尾添加:
set emptystart
set folder=Maildir
set record=+sent
#6 测试
初始化;发送一个邮件:
$ echo 'init' | mail -s 'init' -Snorecord snail
第一次执行你也许会得到如下错误:
这个错误只出现一次,不用担心。看看~/Maildir目录内容。
使用s-nail管理邮件:
$ s-nail
发送邮件测试:
$ echo 'test' | mail -s 'Test email' -r admin@topspeedsnail.com test@163.com
如果test@163.com可以收到邮件表示Postfix配置正确。
上面只是Postfix邮件服务器最基本的配置。