今天利用postfix在亚马逊的VPS上搭建了一个邮件服务器,做好配置并添加了mx记录指向服务器之后,邮件收发均正常。当遇到用postfix发送附件的问题时,难倒我了。在没有安装pop和smtp的情况下,在服务器上只能通过命令行发送信件,命令行的方式只能发送文本内容,而不能发送整个文件。
我们知道,信息在网络上的传输只能采用ASCII编码,那么文件的编码显然不是ASCII的,所以,如果我们要发送附件,肯定是需要对其进行编码的。查找了一些资料,邮件传送用主要的编码方式有 7bit ASCII,8bit ASCII,binary,quoted-printable,base64. 其中base64是最常用的编码方式,为了测试效果,分别用腾讯,163,新浪以及Google向我的邮件服务器发送了一封带附件的邮件,可以看到所有的附件编码都是base64。那么,如果我只想用命令行的方式发送附件,该怎么做呢?幸好linux提供了基于base64的编解码工具base64,使用方法很简单:
1,编码字符串 echo “string”|base64
2,编码文件 base64 文件名
3,解码 echo “code” |base64 -d
那么有了这个之后我们就可以比较简单的用mail命令发送邮件了,例如,我需要把a.txt发动到 test@test.com,只需要敲入命令:base64 a.txt|mail -s “主题” test@test.com就OK了,当然test@test.com接受的邮件是经过编码之后的文本,必须对其进行解码。
当然,通过mail命令只能做一些最简单的收发操作,如果有更高的要求,可以安装pop3和smtp.
为了方便对文件进行编码和解码,我编写了一个Base64在线编码解码工具,请访问:https://www.hitoy.org/tool/file_base64.php. 欢迎使用并提交bug.