如果您有Gmail帐户,则可以配置您的MTA以通过Gmail中继传出的邮件。 这给您的Gmail的可靠性和强大的基础设施带来好处,并为您提供从命令行发送电子邮件的简单方法。
在本教程中,我们将使用Postfix作为我们的MTA。 Postfix是一个免费,开源,积极维护,高度安全的邮件传输代理。
在每个步骤中,我们将介绍以下操作系统的具体说明:
- Debian 8
- Ubuntu 15.10
- CentOS 7
- OpenSUSE 13.2
- Arch Linux 2016.02.01
- FreeBSD 10.2
我们还将安装mailutils / mailx ,以便我们可以发送测试电子邮件。 必要时,我们将安装补充的SASL库。
所有以#开头的命令需要root权限。
1.安装所需的软件
Debian,Ubuntu:
apt-get update && apt-get install postfix mailutils
当提示“一般类型的邮件配置”时,选择“ Internet站点” 。
当提示输入“邮件名称”时,选择要在邮件头中使用的主机名作为电子邮件的来源。 一个完全限定的域名是首选,但使用您的机器的简单主机名可以。 无论您在这里输入的内容如何,您的退货地址都会显示给收件人作为您的Gmail地址。
可能会提示您设置“根和邮局管理员邮件收件人”。 输入root用户或应接收邮件子系统通知的其他用户。
对于任何其他提示,您可以选择默认值。
Fedora:
dnf update && dnf install postfix mailx
CentOS:
yum update && y y安装postfix mailx cyrus-sasl cyrus-sasl-plain
OpenSUSE:
zypper update && zypper install postfix mailx cyrus-sasl
Arch Linux:
pacman -Sy postfix mailutils
FreeBSD:
从ports集合中编译Postfix以纳入对SASL的支持:
portsnap fetch extract update
cd /usr/ports/mail/postfix
make config
在配置对话框中,选择SASL支持 。 所有其他选项可以保持不变。 然后:
make install clean
Mailx可以从二进制包中安装:
pkg install mailx
2.配置Gmail验证
创建或修改Postfix将使用该密码文件来建立与Gmail的身份验证。 在下面的验证信息中,使用您的Gmail 密码替换您的Gmail用户名和密码。 如果您使用自定义Gmail Apps域名,则可以将gmail.com替换为Google Apps域。
密码文件将驻留在Postfix配置目录中。 该文件可以命名任何你喜欢,但推荐的文件名是sasl_passwd 。
Debian,Ubuntu,Fedora,CentOS,OpenSUSE,Arch Linux:
Postfix配置文件驻留在目录/ etc / postfix中 。 创建或编辑密码文件:
vi /etc/postfix/sasl_passwd
添加行:
[smtp.gmail.com]:587 username@gmail.com:password
保存并关闭文件。 您的Gmail密码存储为纯文本,因此使文件只能由root访问:
# chmod 600 /etc/postfix/sasl_passwd
FreeBSD:
Postfix配置文件驻留在目录/ usr / local / etc / postfix中 。 创建或编辑密码文件:
vi /usr/local/etc/postfix/sasl_passwd
添加行:
[smtp.gmail.com]:587 username@gmail.com:password
保存并关闭文件。 使其只能由root访问:
chmod 600 /usr/local/etc/postfix/sasl_passwd
3.配置Postfix
在Postfix配置文件main.cf中必须设置六个参数。 参数为:
relayhost ,指定邮件转发主机和端口号。 主机名将括在括号中以指定不需要MX查找。
smtp_use_tls ,它启用(或禁用)传输层安全性。
smtp_sasl_auth_enable ,它启用(或禁用)SASL身份验证。
smtp_sasl_security_options将在以下配置中设置为空,以确保不使用Gmail不兼容的安全选项。
smtp_sasl_password_maps ,它指定要使用的密码文件。 该文件将在后续步骤中通过postmap进行编译和散列。
smtp_tls_CAfile ,它指定验证服务器身份时要使用的证书颁发机构的列表。
Debian,Ubuntu,Arch Linux:
编辑主Postfix配置文件:
vi /etc/postfix/main.cf
添加或修改以下值:
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
保存并关闭文件。
Fedora,CentOS:
编辑主Postfix配置文件:
vi /etc/postfix/main.cf
添加或修改以下值:
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
保存并关闭文件。
OpenSUSE:
编辑主Postfix配置文件:
vi /etc/postfix/main.cf
添加或修改以下值:
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/ca-bundle.pem
保存并关闭文件。
OpenSUSE还要求修改Postfix主进程配置文件master.cf 。 打开它进行编辑:
vi /etc/postfix/master.cf
找到如下行:
#tlsmgr unix - - n 1000? 1 tlsmg
取消注释,所以它是:
tlsmgr unix - - n 1000? 1 tlsmg
保存并关闭文件。
FreeBSD:
编辑主Postfix配置文件:
vi /usr/local/etc/postfix/main.cf
添加或修改以下值:
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/mail/certs/cacert.pem
保存并关闭文件。
4.处理密码文件
使用postmap来编译和散列sasl_passwd的内容。 结果将存储在文件sasl_passwd.db中的Postfix配置目录中。
Debian,Ubuntu,Fedora,CentOS,OpenSUSE,Arch Linux:
postmap /etc/postfix/sasl_passwd
FreeBSD:
postmap /usr/local/etc/postfix/sasl_passwd
5.重启Postfix
重新启动Postfix服务,使您的更改生效。
Debian,Ubuntu,Fedora,CentOS,OpenSUSE,Arch Linux:
systemctl restart postfix.service
FreeBSD:
仅为此会话启动Postfix服务:
service postfix onestart
要在系统初始化时自动启动Postfix,请打开/etc/rc.conf进行编辑:
vi /etc/rc.conf
添加行:
postfix_enable=YES
保存并关闭文件。 然后您可以运行:
service postfix start
启动Postfix
6.在Gmail中启用“较不安全的应用”
默认情况下,您的Gmail帐户只允许最安全的登录,例如登录到网络上的Gmail。 要允许中继请求,请登录到您的Gmail帐户,然后打开允许不安全的应用 。
有关详细信息,请查看Google支持文档“ 允许安全性较低的应用访问您的帐户 ”。
7.发送测试电子邮件
通过使用邮件命令发送邮件来测试您的新配置。 跑:
mail -s "Test subject" recipient@domain.com
您将看到一个空白行(或CC:字段,您可以按Enter键绕过)。 键入消息的正文,按Enter键换行。 撰写电子邮件时,请输入CTRL-D进行发送。 要取消电子邮件,请按CTRL-C两次。
要发送预先设置的电子邮件,请使用以下命令:
mail -s "Subject Here" recipient@domain.com < textfile
其中textfile是包含要发送的文本的文件的名称。
故障排除
如果不起作用,请检查日志是否有任何Postfix错误:
Debian:
less /var/log/mail.log
Ubuntu,Fedora,CentOS,OpenSUSE,Arch Linux:
journalctl
FreeBSD:
less /var/log/maillog
如果您从Gmail收到身份验证错误,请验证您的Gmail帐户设置中是否启用了允许更少安全的应用 ,如第6步中所述。
验证密码文件sasl_passwd是否存在,并且其内容的格式正确,如第2步中所述。如果对密码文件进行了任何更改,请确保重复第4步和5以散列新的密码文件并重新启动Postfix。
如果看到任何TLS错误,请仔细检查main.cf中的配置,如第3步中所述。如果进行任何配置更改,请按照第5步中的说明重新启动Postfix。