要生成sendmail.cf文件
一般是编译sendmail.mc来生成sendmail.cf,这样的好处是通过编译,会查看出一些sendmail的设置错误和漏洞。
# cd /etc/mail
# vi sendmail.mc
(1)找到:
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
打开注解,启用相应的认证机制,主要是为了支持Outlook。
(2)找到:
DAEMON_OPTIONS(`Port=25, Name=MSA,M=Ea')dnl 这样sendmail将在25端口进行强制身份认证
dnl DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
dnl DAEMON_OPTIONS(`Port=587, Name=MSA,M=a')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
打开注解,启用相应的认证机制,主要是为了支持Outlook。
(3)在(2)后添加两行:
设置MTA和MSA端口。
(4)找到:
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
将该行注释掉,以允许通过网络连接Sendmail。
(5)找到:
dnl FEATURE(`accept_unresolvable_domains')
禁止不可解析域名的转发邮件。
最后保存退出。
编译sendmail.mc生成sendmail.cf文件
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
# /etc/rc.d/init.d/sendmail restart --重起sendmail服务。
如果在执行m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 报错的话,那么检查是否安装sendmail-cf.*.rpm是否安装:
# rpm -qa | grep sendmail-cf
如果没有安装,则需要在安装光盘中找到sendmail-cf包,并安装:
# rpm -ivh sendmail-cf*.rpm
检测编译结果
1、检测SASL被编译到sendmail中。
#/usr/sbin/sendmail -d0.1 -bv root |grep SASL
输出类似如下:
NETUNIX NEWDB NIS PIPELINING SASL SCANF STARTTLS TCPWRAPPERS
保证你看到SASL就是正确的。
2、检测25端口:
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 fyhtest.163.net ESMTP Sendmail 8.12.5/8.12.5; Thu, 10 Apr 2003 16:35:42 -0400
ehlo test
250-fyhtest.163.net Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-DELIVERBY
250 HELP
quit ---退出
只要输出有LOGIN PLAIN就可以了。
到这里,sendmail就配置完了,你可以添加一个用户进行测试:
#useradd test
#passwd test 设置密码
把你服务器的域名添加到/etc/mail/local-host-names中。
其他设置
要想更好的使用sendmail,常用到的一些设置:
1、限制最大邮件。
# vi /etc/mail/sendmail.cf
# maximum message size
MaxMessageSize=5000000 (注:5M)
2、最大的群发数目。
# vi /etc/mail/sendmail.cf
# maximum number of recipients per SMTP envelope
MaxRecipientsPerMessage=20 (注:20个)
3、域名文件----local-host-name 可以用他来实现虚拟域名或多域名支持。
# vi /etc/mail/local-host-name
test.com
test1.com
4、mail别名文件--aliases。
# vi /etc/aliases
系统内部别名:discuz:bbsadmin
discuz是我的用户名,其他的是别名,用逗号隔开。
转发到其他的邮箱:discuz:bbsadmin@discuz.com
# newaliases --写到库中
5、邮件控制文件
relay、ok、reject和discard。
relay: 可以实现转发。
ok: 是用来允许用户的任意访问,它会覆盖任何其它已建立的检查(实际设置中,最好不要设为这项,除非你对该用户是绝对信任的);
reject: 可以实现对来访地址的拒绝,它根本就不容许该地址与你的邮件服务器进行连接通信;
discard: 的作用是在接收到传输的邮件消息后,把它丢弃掉。在发送者看来,他的邮件的确是接收了,但他并不知道,发送的目的地址根本不可能接收到他的邮件,服务器巧妙地欺骗了他。
# vi /etc/mail/access
localhost.localdomain RELAY ---允许
localhost RELAY
127.0.0.1 RELAY
peng@sina.com ok
@sexgirl.net reject
211.77.22.45 discard
# makemap hash /etc/mail/access.db < /etc/mail/access --写到库中
6、Sendmail环境下的防止邮件relay
从8.9版本开始,缺省的是不允许邮件转发(mail relay)的。最简单的允许邮件转发的方法是在文件/etc/mail/relay-domains中进行设置。该文件中列出的域名内的信件都允许通过本地服务器进行邮件转发。
为了更精确的设置,可以在sendmail.mc中添加如下几个参数允许被用来设置邮件转发:
· FEATURE(relay_hosts_only). 通常情况下,在文件/etc/mail/relay-domains中列出的域名的主机都允许通过本地机转发,而该设置指示指定必须罗列出每个允许通过本机转发邮件的主机。
· FEATURE(relay_entire_domain). 该参数指示允许所有本地域通过本机进行邮件转发。
· FEATURE(access_db). 该参数指定利用哈希数据库/etc/mail/access来决定是否允许某个主机通过本地进行邮件转发。
· FEATURE(blacklist_recipients).若该参数被设置,则在决定是否允许某个主机转发邮件时同时察看邮件发送着地址和邮件接受者地址。
· FEATURE(rbl).允许基于maps.vix.com由黑名单(Realtime Blackhole List)进行邮件拒绝,以防范垃圾邮件。
· FEATURE(accept_unqualified_senders).允许接受发送者地址不包括域名的邮件,例如user,而不是user@B.NET。
· FEATURE(accept_unresolvable_domains).通常来讲,sendmail拒绝接受发送者邮件地址指定的主机通过DNS不能解析的邮件,而该参数允许接收这种邮件。
· FEATURE(relay_based_on_MX).该参数允许转发邮件接受者地址的MX记录指向本地的的邮件,例如,本地接收到一个发送目的地址为user@b.com的邮件,而b.com域名的MX记录指向了本地机器,则本地机器就允许转发该邮件。
下面几个特性可能会有安全漏洞,一般当邮件服务器位于防火墙后时才应该使用,因为这些参数可能导致你的系统易于被垃圾邮件发送者利用。
·FEATURE(relay_local_from).该参数指定若消息自称源于本地域,则允许转发该邮件。
·FEATURE(promiscuous_relay).打开对所有的邮件的转发。
|
7.设置完成后outlook发送邮件要求验证时,出现错误
Jan 30 14:45:57 qiuding sendmail[13908]: o0U6jvs1013908: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:45:58 qiuding sendmail[13909]: o0U6jw4h013909: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:38 qiuding sendmail[13918]: o0U6lcCc013918: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:41 qiuding sendmail[13919]: o0U6lefW013919: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:42 qiuding sendmail[13920]: o0U6lfoF013920: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:43 qiuding sendmail[13921]: o0U6lgtZ013921: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:43 qiuding sendmail[13922]: o0U6lh53013922: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 30 14:47:44 qiuding sendmail[13923]: o0U6li7I013923: [116.230.242.136] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
大量查找资料原来是
认证进程没有启动 SASLAUTHD服务一定要启动否则无法进行用户验证
etc/rc.d/init.d/saslauthd start
配置下载
sendmail -bd -q1h
Sendmail的命令参数的含义如下:
-b:指定Sendmail在后台运行,并且监听端口25的请求。
-d:指定Sendmail以Daemon方式运行(守护进程)。
-q:当Sendmail无法将邮件成功地发送到目的地时,它会将邮件保存在队列里。该参数指定邮件在队列里保存的时间。例子里的1h表示保留1小时。
在终端命令窗口运行以下命令来重新启动Sendmail服务:
[root@ahpeng root]#/etc/rc.d/init.d/sendmail restart
在终端命令窗口运行以下命令来关闭Sendmail服务:
[root@ahpeng root]#/etc/rc.d/init.d/sendmail stop
我们还可以在终端命令窗口运行以下命令来检测Sendmail服务器的运行状态:
[root@ahpeng root]# /etc/rc.d/init.d/sendmail status
系统应该显示:
sendmail (pid 3251) 正在运行…
/etc/mail目录下操作
makemap hash access.db<access
killall -9 sendmail
etc/rc.d/init.d/saslauthd start
sendmail -bd -q30m