postfix服务器不支持ssl,配置 Postfix 通过外部SSL 465或587端口的 SMTP 服务器发邮件...
我不想自己去连外部 SMTP 服务器,因为我懒得自己去处理各种错误。我们服务器上很多程序用的是 heirloom mailx 软件的 mail 命令。结果是有些服务器上有好几个甚至几十个 mail 进程卡在那里了。还有不知道通过什么东西发邮件的,偶尔会有邮件没发出来,发出来了的还因为在一个字符的多个字节之间换行再编码导致 mutt 和 Android 的 GMail 程序显示为乱码的。所以我要用
我不想自己去连外部 SMTP 服务器,因为我懒得自己去处理各种错误。我们服务器上很多程序用的是 heirloom mailx 软件的 mail 命令。结果是有些服务器上有好几个甚至几十个 mail 进程卡在那里了。还有不知道通过什么东西发邮件的,偶尔会有邮件没发出来,发出来了的还因为在一个字符的多个字节之间换行再编码导致 mutt 和 Android 的 GMail 程序显示为乱码的。
所以我要用 Postfix,让它来处理这些杂事。之前只把 Postfix 用作普通的 SMTP 服务器过。然而现在目标邮寄地址是腾讯企业邮箱,对由子域名发出的邮件很不友好,老是扔垃圾箱里,连加白名单都没用……于是搜了一下,Postfix 是可以作为客户端登录到 SMTP 服务器来发信的。不过资料比较少,好不容易配置好了,自然要记录一下。
1、创建一个长效的CA证书,执行以下命令:
cd /etc/ssl/certs/
vi Makefile
1
2
cd/etc/ssl/certs/
viMakefile
找到里面所有的 -days 365 改为 -days 3650 也可以随便定个较长的时间,让证书长期有效
然后执行以下命令生成证书:
make server.pem
1
makeserver.pem
当出现以下画面时输入你自定义的证书信息,如下图:
然后将证书复移动到postfix目录:
mv server.pem /etc/postfix/
1
mvserver.pem/etc/postfix/
2、编辑配置main.cf文件,内容如下:
mydomain = tujie.net
myorigin = $mydomain
myhostname = $mydomain
mydestination = $mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
relayhost = [smtp.exmail.qq.com]:587
smtp_use_tls = yes
smtp_tls_CAfile = /etc/postfix/server.pem
smtp_generic_maps = hash:/etc/postfix/generic
smtp_sasl_auth_enable = yes
smtp_sender_dependent_authentication = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mydomain=tujie.net
myorigin=$mydomain
myhostname=$mydomain
mydestination=$mydomain
alias_maps=hash:/etc/aliases
alias_database=hash:/etc/aliases
relayhost=[smtp.exmail.qq.com]:587
smtp_use_tls=yes
smtp_tls_CAfile=/etc/postfix/server.pem
smtp_generic_maps=hash:/etc/postfix/generic
smtp_sasl_auth_enable=yes
smtp_sender_dependent_authentication=yes
smtp_sasl_security_options=noanonymous
smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
3、配置SMTP邮局帐户信息:
编辑或新建文件:/etc/postfix/sasl_passwd ,在文件中添加登陆smtp的信息,格式:[smtp服务器]:端口 邮箱:密码,执行以下命令将文件内容替换为引号内容:
echo "[smtp.exmail.qq.com]:587 user@example.com:password" > /etc/postfix/sasl_passwd
1
echo"[smtp.exmail.qq.com]:587 user@example.com:password">/etc/postfix/sasl_passwd
4、配置默认的发件人:
配置信封上的发件人(MAIL FROM 命令)的地址重写,否则很多邮局拒绝收信的,编辑或添加:/etc/postfix/generic 文件,执行以下命令追加引号内容到文件:
echo '@hostname user@example.com' >>/etc/postfix/generic
1
echo'@hostname user@example.com'>>/etc/postfix/generic
hostname 就是 Postfix 里那个 myhostname,默认是机器的主机名。这句配置的意思是,本来发件人地址是这个主机名的,全部改写成 user@example.com 这个。
5、生成hash数据库,并给予权限:
然后生成 hash 数据库,并更改权限(更好的做法当然是创建的时候就弄好权限),执行以下命令:
postmap /etc/postfix/sasl_passwd
postmap /etc/postfix/generic
chmod 600 /etc/postfix/sasl_passwd*
1
2
3
postmap/etc/postfix/sasl_passwd
postmap/etc/postfix/generic
chmod600/etc/postfix/sasl_passwd*
已经OK,执行以下命令重启 Postfix :
service postfix restart
1
servicepostfixrestart
外部参考:http://www.jslink.org/linux/centos-postfix-mailx-qq-smtp-sendmail.html
更多推荐
所有评论(0)