配置方法给出两篇文章,几乎说得差不多
Configuring Gmail as a Sendmail email relay
CENTOS: Sending Email using SENDMAIL, Relay via GMAIL
遇到的几个问题
1,配置好后无论如何都无法发送,一直以为是自己配置的有问题,找了两天也没能找到问题。
最后的最后,发现竟然是Gmail设置的问题,有一个地方的安全级别限制了代理发送邮件。
Gmail SMTP debug: error “please log in via your web browser”
设置很简单
https://www.google.com/settings/security/lesssecureapps
将较低安全性的APP访问设置成ON就可以了。
2,还有一个问题就是邮件标题(Subject),正文(Content),附件(Attachment)的编码问题。
由于我要发送的邮件标题,正文,附件全部含有日文,所以编码问题就很纠结。
而在Outlook,Thunderbird,Gmail中,他们各自对编码的处理又不完全一样,
导致如果统一用一种编码,无论是UTF8还是ShiftJIS,还是ISOxxxx,
在Outlook和Thunderbird之中总是会有一种在标题或者正文处显示为乱码,
最为可笑的是,ThunderBird在ShiftJIS编码下,除在了主界面的邮件一览处的预览正文乱码之外,其它地方全正常。
解决办法过程是这样的
我打开了Gmail收到的邮件,显示原始邮件
会发现整个Mail是以这种方式分割的
Content-Type: multipart/mixed; boundary=1d2b5860-68f2-4a56-af8a-7448d05b7cb7
....
--1d2b5860-68f2-4a56-af8a-7448d05b7cb7
Content-Type: text/plain; charset=UTF-8
....<content>
--1d2b5860-68f2-4a56-af8a-7448d05b7cb7
Content-Type: text/csv; charset=Shift_JIS;name="report_2016_12_01.csv"
Content-Disposition: attachment;filename="report_2016_12_01.csv"
Content-Transfer-Encoding: base64
....<attachment>
--1d2b5860-68f2-4a56-af8a-7448d05b7cb7
会发现邮件的各个部分之间是以boundary分开的,每个部分都可以单独指定一种编码方式
这就允许一个邮件之中可以同时存在不同的几个编码方式。
这是最简单的结构,更复杂点的是每块被boundary隔开的单独区块还可以再分成更小的boundary
要作的就是在sendmail的时候手工的把这个用boundary组成的结构拼接出来,
这样在正文部分设置成UTF8,ThunderBird就不会乱码了,附件和标题部份设置成ShiftJIS
3,最后还有一个是在CentOS下修改完/etc/mail/sendmail.mc之后要反应到/etc/mail/sendmail.cf
的时候有点有一样,需要用到m4
Common Sendmail Configuration Changes
以上。