Linux下如何配置POSTFIX通过SMTP向外发送邮件

1、安装mailx/postfix

测试环境选为Ubuntu 14.04.X 和 CemtOS6.X下。
Ubuntu下打开shell命令终端依次输入如下命令:
sudo apt-get install heirloom-mailx
sudo apt-get install postfix

CentOS下打开shell命令终端依次输入如下命令:
yum install mailx.x86_64
yum install postfix.x86_64

2、以GMAIL为例创建本地SSL认证证书和密钥数据

打开Linux shell命令终端,依次输入并执行如下命令:
mkdir .certs
certutil -N -d .certs
echo -n | openssl s_client -connect smtp.gmail.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /$PATH$/.certs/gmail.crt
certutil -A -n "Google Internet Authority" -t "C,," -d /$PATH$/.certs -i set /$PATH$/.certs/gmail.crt (以上$PATH$替换为实际路径)

certutil可能系统会返回找不到命令错误,可根据提示命令安装。

3、修改mailx的配置文件

Ubuntu下修改 /etc/nail.rc,CentOS下修改 /etc/mail.rc,文件结尾回车后增加如下内容:
set smtp-use-starttls(使用TLS/STARTTLS 端口:587时增加该条件)
set ssl-verify=ignore
set nss-config-dir=/$PATH$/.certs ($PATH$替换为实际路径)
set from=用户名@astercc.com
set smtp=smtps://smtp.gmail.com:465(gmail 使用TLS/STARTTLS 端口587可改为,set smtp=smtp://smtp.gmail.com:587)
set smtp-auth-user=用户名@astercc.com
set smtp-auth-password=密码
set smtp-auth=login

如果需要多个邮箱的账号并存在配置文件中,在发送时提供选择还有另外一种写法如下:
account gmail {
set smtp-use-starttls(使用TLS/STARTTLS 端口:587时增加该条件)
set ssl-verify=ignore
set nss-config-dir=/$PATH$/.certs ($PATH$为路径)
set from=用户名@astercc.com
set smtp=smtps://smtp.gmail.com:465(gmail 使用TLS/STARTTLS 端口587可改为,set smtp=smtps://smtp.gmail.com:587)
set smtp-auth-user=用户名@astercc.com
set smtp-auth-password=密码
set smtp-auth=login
}

这种写法需要在mail/mailx命令后增加-A参数引用。

4、配置文件增加的参数说明

set smtp-use-starttls:gmail使用TLS/STARTTLS。
ssl-verify:使用SSL。
nss-config-dir:本地SSL认证证书和密钥数据路径。
from:发送的邮件地址。
smtp:发生的外部SMTP服务器的地址。
smtp-auth-user:外部SMTP服务器认证的用户名。
smtp-auth-password:外部SMTP服务器认证的用户密码。
smtp-auth:邮件认证的方式。

确定配置参数,后保存文件后,就可以使用mail/mailx命令发送邮件了。

5、发送测试邮件

命令行使用如下命令发送邮件 mail/mailx (-vcabSA) -s "Test mail" address 回车后命令行输入邮件内容,内容输入完毕回车后ctrl+d发出邮件内容,多个收件人之间用逗号分隔,你也可以通过管道(|)和重定向符(<)获取要发送邮件内容。
-s 指定邮件主题。
-v 列出讯息,例如送信的地点、状态等等。
-c 抄送邮件副本的用户列表。
-a 文件指定的文件附加到邮件。
-b 发送密件副本列出,多个名单应该是一个逗号分隔的名称列表。
-S 设置内部选项的变量(如上面配置文件增加的内容可由 -S set smtp-auth-user=用户名@astercc.com指定)。
-A 多个SMTP账号时引用账号名(即配置文件里account后的名字 )。

温馨提示:
错误一
Resolving host smtp.gmail.com . . . done. Connecting to 173.194.72.108:587 . . . connected. Error initializing NSS: Unknown error -8015. “/root/dead.letter” 11/300 . . . message not sent.
邮件发送异常时返回类似以上错误,这类错误可以理解成是没有证书或创建的证书未生效。
错误二
SMTP发送邮件遇到”535“错误多为账户或密码错误。有的邮箱需要将密码改为SMTP授权码(163邮箱遇到此类问题)。

SMTP错误码详解参考链接: http://www.aiuxian.com/article/p-2648073.html

Leave a Reply

索克维尔旗下产品 · CXMind AI联络中心 · WCC全渠道联络中心