centos安装sendmail服务及设置【亲测好用!】

本文详细介绍了在CentOS系统上安装Sendmail服务的步骤,包括下载yum源,配置SMTP认证,生成配置文件,启动服务,并提供了检查自启、测试发送邮件的方法。此外,还讲解了如何配置最小自由块数、最大邮件大小等参数,以及如何查看、删除邮件和禁止部分应用发送邮件。


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数量)
默认值:可变的
推荐值:10
CPU数量

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了,太简单粗暴又直接了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值