CentOS 系统默认不能发送邮件,需要发送邮件可以安装一个sendmail程序。

yum -y install sendmail sendmail-cf m4
 
systemctl start sendmail.service
ps -ef|grep sendmail
root     24426     1  0 06:28 ?        00:00:00 sendmail: accepting connections
smmsp    24453     1  0 06:28 ?        00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
root     24457 24363  0 06:28 pts/2    00:00:00 grep --color=auto sendmail

邮件客户端

[root@localhost]# mail
 
-bash: mail: command not found
 
[root@localhost]# yum install mailx -y
 
Loaded plugins: fastestmirror
 

配置系统服务

设置Sendmail服务的网络访问权限

vi /etc/mail/sendmail.mc
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

将127.0.0.1改为0.0.0.0,意思是任何主机都可以访问Sendmail服务。
如果仅让某一个网段能够访问到Sendmail服务,将127.0.0.1改为形如192.168.1.0/24的一个特定网段地址。

使用命令行发送邮件

mail -s 'Test mail' [email protected] < body.txt

发送附件,需要安装uuencode软件包,这个程序对二进制文件进行编码使其适合通过邮件进行发送,在CentOS上安装该软件包如下:

yum install sharutils

安装完成后我们就可以来进行附件的发送了,使用如下命令:

uuencode test.txt test | mail -s "hello,see the attachement" [[email protected]](https://mailto:[email protected]) < mail.txt  

完成后就可以把text.txt文件作为邮件的附件发送出去了。uuencode有两个参数,第一个是要发送的文件,第二个是显示的文件名称。

修改主机名称

hostname duchaoqun
修改DNS配置文件:
/etc/hosts 中的配置更改成127.0.0.1 duchaoqun.cn

修改sendmail 配置文件

SendMail运行过程是读取/etc/mail/sendmail.cf配置文件,但该文件配置比较复杂,所以一般是配置/etc/mail/sendmail.mc,然后通过以下命令生成sendmail.cf文件

(每次修改sendmail.mc后都必须通过使用该命令后再重启sendmail服务,否则配置不会生效)
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
在/etc/mail/sendmail.mc文件对格式要求非常严格:
每句左边不能有空格
区分大小写
注释在最左边加dnl
每句必须以dnl结束
增加的语句,不能在最后一行
语句中的引号比较奇怪 ` ’

/etc/mail/sendmail.mc 配置文件
要把 LOCAL_DOMAIN(localhost.localdomain’)dnl 改成 LOCAL_DOMAIN(lucifo’)dnl

echo hellasdfasdf |mail -s “Test What is the sendmail” [email protected]

添加域名解析

类似邮件身份证一样的东西,避免被收件人认为是垃圾邮件。
[root@duchaoqun]# vim /etc/mail/local-host-names
duchaoqun.cn

5642669821645.png

3628746495894.png

注:先添加一个mail的A记录,然后在添加一个“子域名”为空的MX记录,然后使用nslookup -qt=mx duchaoqun.cn 查看mx记录是否生效。

配置说明参考地址

http://blog.csdn.net/zhaoyingm/article/details/8658372

问题1

mail -s “asdfasdf” [email protected] < parse_result.txt

收到的邮件中包含一个附件,没有正文,其实是parse_result.txt里面有\r\n 符号,但是\r 会被mail识别成二进制文件,所以需要全部替换掉
为了避免这种情况,需要将文本中的\r(也就是^M)全部删除,可以用下面命令删除:
:%s/^M//gc //注意,^M要使用要用 Ctrl +V和Ctrl + M 来输入.