我不想自己去连外部 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

当出现以下画面时输入你自定义的证书信息,如下图:

fea46b5f2f2da3f69ce70cc7c0d5c395.png

然后将证书复移动到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

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐