在 Debian / Ubuntu 系统:
apt-get install mailutils
apt-get install sharutils #支持附件发送,使用uuencode
apt-get install sendmail
apt-get install sendmail-cf
sendmail
启用sendmail
service start sendmail #systemctl start sendmail.service
sendmail配置
sendmail默认只会为本机用户发送邮件,只有把它扩展到整个Internet,才会成为真正的邮件服务器,sendmail的配置文件:/etc/mail/sendmail.mc
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp,Addr=127.0.0.1')dnl
将Addr=127.0.0.1修改成0.0.0.0
修改之后产生新的配置文件:
mv sendmail.cf sendmail.cf~ #做一个备份
m4 sendmail.mc > sendmail.cf #>的左右有空格,提示错误没有安装sendmail-cf
安装mailutils
安装过程中会让你选择一种配置类型。一般情况下,我们需要选择第二种类型:Internet Site
No configuration 表示不要做任何配置;
Internet Site 表示直接使用本地SMTP服务器发送和接收邮件;
Internet with smarthost 表示使用本地SMTP服务器接收邮件,但发送邮件时不直接使用本地SMTP服务器,
而是使用第三方smart host来转发邮件;
Satellite system 表示邮件的发送和接收都是由第三方smarthost来完成。
Local only 表示邮件只能在本机用户之间发送和接收。
发送有主题的邮件
echo "Email text" | mail -s "Test Subject" user@example.com #-s的用处是指定邮件的主题
从文件中读取邮件内容并发送
mail -s "message send from file" user@example.com < /path/to/file
将从管道获取到的echo命令输出作为邮件内容发送
echo "This is message body" | mail -s "This is Subject"
user@example.com
发送带附件的邮件
echo "Body with attachment"| mail -a foo.tar.gz -s "attached file" user@example.com
uuencode
邮件传输系统最初是被设计来传送7位编码(类似ASCII)的内容的。这就意味这它是用来发送文本内容,而不能发会使用8位的二进制内容(如程序文件或者图片)。uuencode(“UNIX to UNIX encoding”,UNIX之间使用的编码方式)程序用来解决这个限制。使用uuencode,发送端将二进制格式的转换成文本格式来传输,接收端再转换回去。
我们可以简单地使用uuencode和mailx或者mutt配合,来发送二进制内容,类似这样:
uuencode example.jpeg example.jpeg | mail user@example.com
注意:
1、/etc/hosts中修改为:
127.0.0.1 localhost localhost.localdomain jason #jason计算机主机名
参考资料