Linux使用QQ SMTP服务器发送邮件

着实搞了我整整一天,艰辛的过程就不说了,直接说使用和配置。
特别注意:smtp.qq.com用于普通用户,stmp.exmail.qq.com用于企业用户

方式一

工具

  • ssmtp
  • mailutils(可有可无吧)

配置SMTP

配置/etc/ssmtp/ssmtp.conf

root=van                        # 名字,不重要
hostname=van                    # 机器名,不重要
mailhub=smtp.exmail.qq.com:465  # QQ有提供,重要
rewriteDomain=qq.com            # 转发域名,重要
AuthUser=yuzetao@chafou.com     # 你的邮件地址,重要
AuthPass=xxxx                   # QQ给的授权码,重要
FromLineOverride=YES            # 可以覆盖From等header,重要(QQ会校验From字段)
UseTLS=YES                      # 强制使用TLS,重要(QQ强制)

配置/etc/ssmtp/revaliases

root:yuzetao@chafou.com:smtp.exmail.qq.com:465  # 改成你的邮件地址,重要(用于匹配替换)

使用mail发送邮件

mail -a 'From: yuzetao@chafou.com(van_江城子)' -s '这是一个最终测试邮件' y344087491@gmail.com < test_mail        # -a 设置From头非常重要,否则会覆盖,被QQ拒绝

相关知识

特别注意header

如:
From:发送者,如果用英文括号,可以展示括号中的内容
To:接受者
Cc:抄送给谁
Content-Type:就和HTTP协议一样,如果是text/html,服务器会渲染
……

方式二

工具

  • postifx
  • mail(mailx)

配置postifx

postfix是一个邮件传输代理(MTA),可以用它来收发邮件,这里只是用做接受mail客户端(MUA)的邮件,来转发到远端的SMTP服务器

relayhost = smtp.exmail.qq.com:465              # 对方服务器
smtp_use_tls = yes                          # 使用TLS
smtp_sasl_auth_enable = yes
smtp_tls_wrappermode = yes
smtp_tls_security_level = encrypt
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/private/etc/postfix/sasl_passwd # 用户名密码相关
smtp_generic_maps = hash:/etc/postfix/generic   # 转发设置(对QQ很重要)

配置sasl_password

smtp.exmail.qq.com:465 yuzetao@chafou.com:<授权码>

配置generice

van@vans-MacBook-Pro.local yuzetao@chafou.com   # 更改了From头