centos安装sendmail服务及设置【亲测好用!】
sendmail是Linux下优秀的邮件系统。今天某个网站需要有发邮件的需求,而服务器安装时没有安装这个,那就开始吧。
1、安装
#yum install -y sendmail
#yum install -y sendmail-cf
但是,执行这个命令老抱这个错误!!
[root@192 ~]# yum install sendmail -cf
CRITICAL:yum.cli:Config error: Error accessing file for config file:///root/f
1,下载最新的yum-3.2.28.tar.gz并解压
[root@192 ~]# wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
[root@192 ~]# tar xvf yum-3.2.28.tar.gz
2,进入目录,运行安装
cd yum-3.2.28
yummain.py install yum
后来搜索资料,原来是缺少配置文件。在etc目录下面新建yum.conf文件,然后再次运行
yummain.py install yum
顺利完成安装。
最后更新系统,全部搞定,收工。
yum check-update
yum update
yum clean all
如果需要SMTP验证就安装并启动saslauthd服务:
# yum install -y saslauthd
# service saslauthd start
2、配置
(1) 配置Senmail的SMTP认证
# vi /etc/mail/sendmail.mc
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
将上面两行的dnl去掉。在sendmail文件中,dnl表示该行为注释行,是无效的,因此通过去除行首的dnl字符串可以开启相应的设置行。
(2) 设置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的一个特定网段地址。
3、生成配置文件
Sendmail的配置文件由m4来生成,m4工具在sendmail-cf包中。如果系统无法识别m4命令,说明sendmail-cf软件包没有安装。
#m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
4、启动服务
#service sendmail start
检查服务是否加入自启行列
#chkconfig --list |grep sendmail
------------------------------ 切 割 线 -----------------------------------
安装sendmail
1、安装:
#yum install -y sendmail
#yum install -y sendmail-cf
如果需要SMTP验证就安装并启动saslauthd服务:
# yum install -y saslauthd
# service saslauthd start
2、配置
(1) 配置Senmail的SMTP认证
# vi /etc/mail/sendmail.mc
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
将上面两行的dnl去掉。在sendmail文件中,dnl表示该行为注释行,是无效的,因此通过去除行首的dnl字符串可以开启相应的设置行。
(2) 设置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的一个特定网段地址。
3、生成配置文件
Sendmail的配置文件由m4来生成,m4工具在sendmail-cf包中。如果系统无法识别m4命令,说明sendmail-cf软件包没有安装。
#m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
4、启动服务
#service sendmail start
5 检查服务是否加入自启行列
#chkconfig --list |grep sendmail
测试发送邮箱
方法1 安装sendmail即可使用,
mail -s "test" user@sohu.com <content.txt
bin/mail会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的资源占用。
方法2。利用外部的smpt服务器
而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的:
修改/etc/nail.rc (/etc/mail.rc)
set from=fromUser@domain.com smtp=smtp.domain.com
set smtp-auth-user=username smtp-auth-password=password
set smtp-auth=login
说明:
from是发送的邮件地址
smtp是发生的外部smtp服务器的地址
smtp-auth-user是外部smtp服务器认证的用户名
smtp-auth-password是外部smtp服务器认证的用户密码
smtp-auth是邮件认证的方式
配置成功后,就可以使用了
可以发送一封邮件测试一下:
mail -s "test" username@163.com <content.txt
其中-s后面的是邮件标题,user@sohu.com是收件人地址,content.txt里面是邮件正文
字符编码
在发送中文邮件中,字符编码是一个比较重要的问题,如果设置不正确,会导致邮件标题或邮件内容显示乱码。
邮件内容的编码可以在邮件头content-type中设置,如设置邮件内容为utf-8编码:
Content-type: text/html;charset=utf-8
邮件头中,如From,To,Subject等,如果需要用到中文,可以这样设置:
“=?UTF-8?B?”+base64encode(内容UTF8编码)+"?="
From: =?UTF-8?B?5L2g5aW9?= www.111cn.nert <jdoe@machine.example>
Sender: Michael Jones <mjones@machine.example>
To: Mary Smith <mary@example.net>
Content-type: text/html;charset=utf-8
Subject: =?UTF-8?B?5L2g5aW9?=
<div style="border:solid 1px #1D448C;">
<h1>This is a message just to say hello.</h1>
<p>So, "Hello".</p>
</div>
sendmail 配置参数
1.配置最少的自由块数
配置参数:MinFreeBlocks
参数描述:文件系统用来接受标准SMTP(简单邮件传输协议)邮件的队列中的最少的自由块数目。
越小越容易被攻击致命。
默认值:100
推荐值:4000或者更大
2.最大邮件大小
配置参数:MaxMessageSize
参数描述:每封邮件的最大尺寸,以比特(bytes)为单位。越大越容易被攻击致命。
默认值:不限制
推荐值:5M
3.自动重建别名
配置参数:AutoRebuildAliases
参数描述:需要的时候自动重建所有别名。如果设定为True的话,这是一个潜在的能引起拒绝服务攻击的危机。
默认值:False
推荐值:False
4.队列平均负荷
配置参数:QueueLA
参数描述:单一队列时的平均负荷。根据CPU的数量适当设定(8CPU数量)
默认值:可变的
推荐值:10CPU数量
5.平均负荷拒绝临界点
配置参数:RefuseLA
参数描述:一旦平均负荷超过此临界点,所有Incoming的SMTP连接均拒绝。
默认值:可变的
推荐值:8*CPU数量
6.最大的守护进程的子进程数
配置参数:MaxDaemonChildren
参数描述:容许Fork的最大的子进程数。超过此数目,连接就会被拒绝。如果设定值小于等于零,就意味着不限制。
默认值:没有定义
推荐值:根据内存大小设定。(例如,128M内存建议值为40)
7.最大的报头长度
配置参数:MaxHeadersLength
参数描述:所有报头的最大总长
默认值:没有设定
推荐值:32或者64K
8.最大MIME编码报文长度
MIME,Multipurpose Internet Mail Extension protocol,多用途的网际邮件扩充协议
配置参数:MaxMimeHeaderLength
参数描述:经过MIME编码的最大报文长度
默认值:没有定义
推荐值:1024或者更小
9.每封邮件的最多接收者
配置参数:MaxRecipientsPerMessage
参数描述:如果设定了的话,每封邮件只能同时抄送给指定数量的收信人。超过此数目就会返回一个452的错误代码。也就是说,在邮件队列中,会被无限期的延缓发送。
默认值:没有设定
推荐值:10-100
---------------------------- 切 割 线-------------------------
centos7下mail邮件的查看、删除、禁止部分应用发邮件
查看与删除
mail命令进入
& p #显示当前邮件
& 2 #显示标号为2的文件
& d 1-100 #删除标号 1-100 的邮件,务必随后执行 q命令,保存该操作,否则删不掉;
& q #退出并保存命令操作内容
& z #最新的20封邮件列表
& Z #最后一页(20封) 邮件列表
禁止cron发用户邮件
新装系统,cron中启动了几条定时任务,随后,时不时的蹦出条提示:
You have new mail in /var/spool/mail/root
用户邮件产生的原因:
根本原因:cron中执行的脚本有输出导致。cron比较乖,搂到执行的定时任务一旦有输出内容就直接这mail给cron运行的用户,我们在写脚本时需要考虑标准输出和错误输出如何处理,避免一堆的垃圾邮件。
普通处理方法–在每条cron后面添加输出到空。
/dev/null 2>&1.
OR
&> /dev/null
如:
*/2 * * * * /usr/local/sbin/ph_monitor.sh >/dev/null 2>&1
更简单的方法:
crontab -e
在第一行添加:MAILTO=""
直接把/etc/crontab的收件人置空就ok了,太简单粗暴又直接了。
本文详细介绍了在CentOS系统上安装Sendmail服务的步骤,包括下载yum源,配置SMTP认证,生成配置文件,启动服务,并提供了检查自启、测试发送邮件的方法。此外,还讲解了如何配置最小自由块数、最大邮件大小等参数,以及如何查看、删除邮件和禁止部分应用发送邮件。
676

被折叠的 条评论
为什么被折叠?



