RHEL5 sendmail 搭建

RedHat Enterprise 5Sendmail服务器搭建

关于sendmail服务
Sendmail是目前Linux下最常用的e-mail服务,虽然sendmail功能配置比较复杂,而且有被Postfix取代的趋势,但目前RHCE考试的邮件服务搭建中涉及到Sendmail,将来会采用Postfix

环境
我们组建两台邮件服务器AB与一台DNS,其中
A 192.168.100.102/24 有域名mail.rhce.com
B 192.168.100.101/24 有域名mail.example.com
DNS 192.168.100.98

服务配置

一 A上作如下配置
打开/etc/mail/local-host-names (该文件用于定义收发邮件的主机别名)
# local-host-names - include all aliases for your machine here.
rhce.com                   #注:不可少,否则收不到邮件,但仍可以发邮件
mail.rhce.com               #注:可要可不要

二 修改/etc/mail/access  (该文件可用于限制哪些客户端可以使用此邮件服务器来转发邮件,也可不配,默认即是转发的)
rhce.com                            RELAY
example.com                         RELAY
192.168.100.                         RELAY
192.168.10.                                              REJECT   #设置拒绝转发192.168.10网段的邮件
注:可以设置的选项还有 OK/REJECT/DISCARD/ERROR:550

三 B上有如下配置
修改/etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
example.com
mail.example.com

四 修改/etc/mail/access
rhce.com                               RELAY
example.com                            RELAY
192.168.100.                            RELAY   
接着双方均要用makemap hash access.db<access 生成访问许可库文件
双方分别在/etc/resolv.conf中设置192.168.100.98DNSIP地址
另外双方的hostname/etc/sysconfig/network中的域名均要设为相应的域名,如下:
主机A
hostname mail.rhce.com
修改/etc/sysconfig/network ,设置HOSTNAME=mail.rhce.com
主机B
hostname mail.example.com
修改/etc/sysconfig/network ,设置HOSTNAME=mail.example.com

五 AB均要修改/etc/mail/sendmail.cf
O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA   (注:将127.0.0.1改为0.0.0.0 即使服务器能够为主机的所有网络接口(0.0.0.0)提供服务


改完之后重启sendmail服务:
service sendmail restart (注:用netstat tlunp查看是否在0.0.0.0上监听)

六 AB均打dovecot服务,只有使用了dovecot才能使用Foxmail/OutLook等通过POP3/IMAP协议接受邮件,命令如下:
service dovecot restart
注:此时查看是否打开了110/143端口,实际上还打开了993(IMAP-SSL)/995(POP3-SSL)端口;

DNS中的设置如下 

DNSnamed.conf中有如下配置

options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file  "/var/named/data/named_stats.txt";
};
include "/etc/rndc.key";

zone "." {
        type hint;
file "named.ca";
};

zone "example.com" {
        type master;
        file "example.com.zone";
};
zone "rhce.com" {
        type master;
        file "rhce.com.zone";
};

DNSexample.com.zone文件中有如下配置

$ttl 38400
example.com.    IN      SOA     dns.example.com. admin.example.com. (
                        2005090503  ;Serial
                        10800       ;Refresh
                        3600        ;Retry
                        604800      ;Expire
                        38400 )     ;Negative Cache TTL
example.com.         IN NS      dns.example.com.
rhel4            IN     CNAME   dns
bbs              IN     CNAME   www
samba            IN     CNAME   www
example.com.    IN      MX      5       mail
mail    IN      A       192.168.100.101

DNSrhce.com.zone文件中有如下配置

$ttl 38400
rhce.com.       IN      SOA     dns.rhce.com. admin.rhce.com. (
                        2005090503  ;Serial
                        10800       ;Refresh
                        3600        ;Retry
                        604800      ;Expire
                        38400 )     ;Negative Cache TTL
rhce.com.            IN NS      dns.rhce.com.
www.rhce.com.        IN A       192.168.100.29
rhel4            IN     CNAME   dns
bbs              IN     CNAME   www
samba            IN     CNAME   www
rhce.com.       IN      MX      5       mail
mail    IN      A       192.168.100.102

关于密钥与证书
如果要设置POP3SIMAP4服务器都必须生成相应的密钥和证书;
服务器使用私钥加密邮件,客户端收邮件时,使用证书中的公钥对邮件进行解密,才能够正常读邮件;

配置SenmailSMTP认证配置

  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去掉   *RHEL4*5中,sendmail.conf配置文件设置使用saslauthd服务程序提供了用户的认证程度,所以必须启动sasaauthd服务

  (4)访问控制的配置access,在RHEL4&5中,默认了Sendmail服务器所在的主机的用户可以任意发送邮件,而不需要任何身份验证

即注意/etc/mail/access文件中有一行: 127.0.0.1 RELAY

makemap hash access.db(5)使用m4命令生成sendmail.cf文件,其实sendmail.mc即是一模板文件

  m4 sendmail.mc >sendmail.cf

  启动Sendmail,saslauthd服务,验证Sendmail服务

  telnet localhost 25 //输入ehlo localhost 此时应该有LOGIN PLAIN的字样,即表示SMTP认证设置成功.

  chkconfig --level 35 saslauthd on

  service saslauthd start

  第二步:配置Dovecot服务器

  用命令system-config-packages安装dovecot软件包,vi /etc/dovecot.conf

  将#protocols =imap imaps pop3 pop3s 前面的#去掉,RHEL4中加上pop3,pop3s

  启动dovecot服务 service dovecot start

第三步:启动DNS,saslauthd,sendmail.dovecot服务进行测试



如何制作私钥和自签名证书:
cd /etc/pki/tls/certs/
make dovecot.pem #该文件保存邮件服务器的私钥和公钥信息;
vi /etc/dovecot.conf

ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem
ssl_key_file = /etc/pki/dovecot/private/dovecot.pem
改为
ssl_cert_file = /etc/pki/tls/certs/dovecot.pem
ssl_key_file = /etc/pki/tls/certs/dovecot.pem
接着重启dovecot服务
service dovecot restart

收发邮件测试
关于Foxmail的使用
分别设定邮箱账户为alading@rhce.com,alading@example.com,SMTP/POP3的服务器IP分别为192.168.100.102/101;
2  用这两个账户相互发送邮件即可完成测试
注:
默认情况下不可以登录到root的邮箱接受邮件,但可以用于发送,所以这里采用普通用户alading;
如果普通用户不能登录到邮箱,用passwd 设置密码后,再打开foxmail的邮箱账户设置,设置邮件服务器里头的高级设置,点中SMTPPOP3SSL连接再试试;

Sendmail的伪装

SendMail对本服务器所有发出的邮件进行地址伪装(自动修改发件人地址)

全局伪装

全局伪装针对所有本区域用户,此功能需修改/etc/mail/sendmail.mc文件,下面的例子中所有发住外部区域的邮件收件人所有区域自动修改为zhangqin.com

       

MASQUERADE_AS(`zhangqin.com’)dnl      #复制修改为要伪装的域名
FEATURE(masquerade_envelope)dnl       #这句有例句就在第一句的下几行,取消注释即可
FEATURE(masquerade_entire_domail)dnl   #这句有例句就在第一句的下几行,取消注释即可

指定用户伪装

指定用户的地址伪装,该功能只能用于收件人是外部域。这个可以和全局地址伪装同时使用。下面的例子中将所有user7@example.zqin发出的邮件发件人修改为zhangqin@rhel.com
修改/etc/mail/sendmail.mc文件。

       

FEATURE(genericstable)dnl                    #需要输入,genericstable文件需要新建
MASQUERADE_AS(`always_add_domain’)dnl     #这句配置文件中有,不需修改
GENERICS_DOMAIN_FILE(`/etc/mail/local-host-names’)dnl     #需要输入

建立用户列表。

lost-hosts-names中加入虚拟区域名称 

linux下搭建带有方病毒和反垃圾邮件的sendmail邮件系统

,安装sendmail并修改配置文件
1.修改sendmail的配置文件sendmail.mc
找到DAEMON_OPTIONS(`Port=smtp,Addr=192.168.1.156, Name=MTA')dnl修改成:
dnl #DAEMON_OPTIONS(`Port=smtp,Addr=192.168.1.156, Name=MTA')dnl
找到FEATURE(`accept_unresolvable_domains')dnl修改成:
dnl #FEATURE(`accept_unresolvable_domains')dnl
2.生成新的sendmail.cf
m4 /etc/mail/sendmail.mc>/etc/mail/sendmail.cf

,安装spamassassin

,安装MailScanner并修改配置文件
修改mailscanner的配置文件注意一下选项做了正确配置
vi /etcMailScanner/MailScanner.conf
%org-name% = lrq.com
%org-long-name% = lrq.com
%web-site% = www.lrq.com
%etc-dir% = /etc/MailScanner
MTA = sendmail
Virus Scanning = yes
Virus Scanners = mcafee
Deliver Cleaned Messages = yes
Virus Subject Text = {Virus?}
Spam Subject Text = {Spam?}
Spam Checks = yes
Use SpamAssassin = yes
Required SpamAssassin Score = 6
High SpamAssassin Score = 10
Spam Actions = deliver header "X-Spam-Status: Yes"


,客户端收发邮件,在服务器上查看邮件日志
tail -f /var/log/maillog

日志的解释
Jan  1 22:33:21 fc8 sendmail[3840]: m01EXLxq003840: from=<lrq@lrq.com>, size=419, class=0, nrcpts=1, msgid=<003301c84de0$28eccdc0$7601a8c0@benetlrq>, proto=SMTP, daemon=MTA, relay=[192.168.1.118]
解释:sendmail收到一份邮件编号是:m01EXLxq003840,这封邮件的发信人是lrq@lrq.com,邮件大小419个字节,客户机的主机名是:benetlrq(其实是benet-lrq中间的-被忽略掉了),发件人是使用smtp协议从192.168.1.118上发送的邮件

Jan  1 22:33:24 fc8 MailScanner[2983]: New Batch: Scanning 1 messages, 797 bytes

解释:mailscanner开始垃圾邮件扫描

Jan  1 22:33:33 fc8 MailScanner[2983]: Virus and Content Scanning: Starting

解释:mailsacnner开始病毒扫描

Jan  1 22:33:38 fc8 MailScanner[2983]: Uninfected: Delivered 1 messages

解释:邮件没有病毒,成功传递

Jan  1 22:33:39 fc8 sendmail[3848]: m01EXLxq003840: to=<lrq@lrq.com>, ctladdr=<lrq@lrq.com> (500/500), delay=00:00:18, xdelay=00:00:00, mailer=local, pri=120419, dsn=2.0.0, stat=Sent

解释:sendmail把经过扫描的邮件进行了投递

Jan  1 22:33:58 fc8 dovecot: pop3-login: Login: user=<lrq>, method=PLAIN,ip=192.168.1.118, lip=192.168.1.156

解释:192.168.1.118的客户端通过pop3协议登录系统收取邮件

Jan  1 22:33:58 fc8 dovecot: POP3(lrq): Disconnected: Logged out top=0/0, retr=1/1049,del=1/1, size=1032