在sendmail服务器中,使用access.db数据库进行基于主机地址的访问控制,为了安全起见,sendmail默认关闭了为除本机以外的任何客户端RELAY邮件的功能,在现实使用中,可以打开其为本地网络RELAY邮件的功能,通过修改access文件来实现。
在sendmail下的.db文件中,都会对应有一个文本文件叫数据库配置文件,它是用来进行管理的。当我们对它进行相应的配置后,需要使用makemap命令将数据库配置文件生成.db的数据库文件,因为sendmail服务器只能识别.db的数据库文件的配置内容。
192.168.0 RELAY //允许192.168.0.0网段的所有主机RELAY.
在sendmail服务器的配置目录中,local-host-names文件用于设置邮件服务器提供邮件服务的域名,我们可以在这里指定sendmail服务器所负责接收邮件的域。
# vi /etc/mail/local-host-names //添加一行
mail.zhen.com
设置邮件别名
在sendmail服务器中,使用aliases机制实现邮件别名和邮件群发功能,在/etc目录下同时存在名为aliases和aliased.db的两个文件,aliases文件是文本文件,内容都是可编辑的,aliases.db文件是数据库文件,是由aliases文件生成的。
首先需要建立两个测试用户,然后才可以设置别名
# vi /etc/aliases
//在文件尾添加一行:
aa: bb //为邮件用户bb设置别名aa,将发往aa的邮件转发到bb用户的邮箱中。
配置完成后使用下列命令将其转换为sendmail可以识别的格式:
# newaliases
当对所有的配置完成后,需要重新启动服务。
# service sendmail restart
查看端口的监听状态
# netstat -tnlp | grep :25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LIST
三、发信测试
# telnet localhost 25 //连接本机的25端口
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 mail.zhen.com ESMTP Sendmail 8.13.1/8.13.1; Tue, 17 Jun 2008 10:12:18 +0800
mail from:root@mail.zhen.com //设置发信人的地址
250 2.1.0 ... Sender ok
rcpt to:qq@mail.zhen.com //设置收信人的地址
250 2.1.5 ... Recipient ok
data //指明邮件正文开始
354 Enter mail, end with "." on a line by itself
subject: //指明邮件主题
subject:hello bb
nihao bb welcome!
. //用点号表示结束
quit //表示退去
# su - bb //切换到bb用户,进行收信
在上面我们给bb设置了别名,那现在我们验证一下是否可以
# telnet localhost 25
mail from:root@mail.zhen.com
rcpt to:aa@mail.zhen.com
data
subject:nihao aa
welcom welcome welcome
.
quit
下面我们切换到aa里面去看看
# su - aa
$ mail
No mail for aa
去bb中看看
# su - bb
$ mail
N 3 Tue Jun 17 10:19 13/501 "nihao aa"
& 3
Message 3:
From Tue Jun 17 10:19:58 2008
Date: Tue,
2008 10:19:19 +0800
From: root <>
X-Authentication-Warning: mail.zhen.com: benet02 [127.0.0.1] didn't use HELO protocol
subject: nihao aa
welcom welcome welcome
可以看出我们设置的别名生效了。
四、安装及配置可以用于收信的服务器dovecot
sendmail服务器并不为MUA软件提供收取邮件的功能,因此系统中需要单独安装实现POP3或IMAP功能的服务器程序。
安装dovecot软件包,在系统的第4张光盘中。
# rpm -ivh dovecot-0.99.11-2.EL4.1.i386.rpm
warning: dovecot-0.99.11-2.EL4.1.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:dovecot ########################################### [100%]
有时会存在依赖关系,应找到相应的依赖的软件包逐一安装上去。
修改配置文件
默认情况下,dovecot服务器可以提供IMAP和POP3服务,但是默认只提供IMAP服务,因此需要在dovecot配置文件中进行配置的修改
# vi /etc/dovecot.conf
//找到下列一行
#protocols = imap imaps
并修改为:
protocols = imap imaps pop3 pop3s
启动dovecot服务,并查看开启状态
# service dovecot start
# netstat -tnlp | grep dovecot
tcp 0 0 :::993 :::* LISTEN 23037/dovecot
tcp 0 0 :::995 :::* LISTEN 23037/dovecot
tcp 0 0 :::110 :::* LISTEN 23037/dovecot
tcp 0 0 :::143 :::* LISTEN 23037/dovecot
设置dovecot在开机时自动启动
# chkconfig --list dovecot
dovecot 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig --level 2345 dovecot on
下面我们可以使用OE进行邮件的收发测试
打来OE,设置邮箱账号,选择“工具”—“账号”,添加邮件,
在显示名中填写你的用户名bb,电子邮件地址填写
在电子邮件服务器名中设置接收和发送邮件的邮件服务器地址
接收邮件服务器为:192.168.0.11
发送邮件的服务器为:192.168.0.11
下面按向导完成
下面就可以发送邮件了
指明收件人为:
填写相关内容后,点击发送。
这时回到服务器中,可以看到下面一条信息
You have new mail in /var/spool/mail/root
然后查看一下:
# mail
>N 4 Tue Jun 17 10:42 24/761 "qqqqqqqqqqqq"
& 4
Message 4:
From Tue Jun 17 10:42:21 2008
From: "bb" <>
To: <>
Subject: qqqqqqqqqqqq
Date: Tue, 17 Jun 2008 10:27:34 +0800
MIME-Version: 1.0
Content-Type: text/plain;
charset="gb2312"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.3790.1830
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.1830
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from base64 to 8bit by mail.zhen.com id m5H2gLOo023051
222222222
222222222
22222222
sendmail服务器的用户管理
邮件服务器提供发送邮件的功能是很正常的,但是如果为所有人都能够无条件地发送邮件是很危险的,非常容易产生垃圾邮件,因此我们可以在sendmail服务器中设置发送邮件的用户认证,当用户使用MUA软件通过SMTP向邮件服务器发送邮件时,邮件服务器会要求用户提供用户账号和口令进行身份认证,只有通过身份认证的用户才能够通过邮件服务器向外部发送邮件。
在sendmail服务器中,使用sasl的第2版作为SMTP的认证方式
首先查看系统中有没有安装sasl的相关软件包
# rpm -qa | grep cyrus-sasl
cyrus-sasl-md5-2.1.19-5.EL4
cyrus-sasl-2.1.19-5.EL4
cyrus-sasl-plain-2.1.19-5.EL4
cyrus-sasl-devel-2.1.19-5.EL4
cyrus-sasl-gssapi-2.1.19-5.EL4
如果系统没有安装的话,需要使用rpm命令安装一下,软件包在系统的第3张光盘中。
我们需要编辑一下配置文件sendmail.mc来打开sasl2的认证功能
# 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
//并把修改为:
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
dnl
注意:在sendmail.mc文件中,行首的dnl表示该行为注释行,是无效的,因此通过去除行首的dnl字符串可以开启相应的设置行。
然后要重新生成sendmail.cf文件
# cd /etc/mail
# m4 sendmail.mc > sendmail.cf
# service sendmail restart
在"/usr/lib/sasl2/"目录中的Sendmail.conf配置文件设置了使用saslauthd服务程序提供用户的认证服务,我们需要编辑一下配置文件
# vi /usr/lib/sasl2/Sendmail.conf
//在文件中添加下列一行
mech_list:login plain digest=md5
启动saslauthd服务,并设置其开机自动启动
# service saslauthd start
Starting saslauthd: [ OK ]
# chkconfig --level 2345 saslauthd on
为了演示效果我们可以编辑一下"/etc/mail/access"文件
# vi /etc/mail/access
//删除下行
192.168.0 RELAY
然后重新生成access.db文件
# makemap hash /etc/mail/access.db 重新启动sendmail服务
# service sendmail restart
下面我们验证一下效果
打开OE,发送邮件,会发现发送不出去,出现信息:
由于服务器拒绝接受发件人的电子邮件地址,这封邮件无法发送。发件人的电子邮件地址是">“”。 主题 'fdsaf', 帐户: '192.168.0.11', 服务器: '192.168.0.11', 协议: SMTP, 服务器响应: '530 5.7.0 Authentication required', 端口: 25, 安全(SSL): 否, 服务器错误: 530, 错误号: 0x800CCC78
这是我们知道到"工具"—"帐户"—"属性"在弹出的对话框中,选择"服务器",在最下面的"我的服务器要求身份验证"前面的框中打勾,这时再发送邮件,就可以发送出去了。