linux下sendmail的安装与配置
时间:2009-03-23 来源:sjhf
一、首先查看软件包是否被安装 sendmail服务器在RHEL4中是被默认安装的,软件包的名称是sendmail,可以使用rpm命令来查看,m4软件包提供了配置sendmail服务器必需的工具程序,与sendmail软件包一同默认安装在系统中,这两个软件包都在系统的第2张光盘中,如果没有安装的话,则安装上去。 # rpm -qa | grep sendmail sendmail-8.13.1-2 # rpm -qa | grep m4 m4-1.4.1-16 另外在RHEL4的第4张安装光盘中,包括了文件名以sendmail开始的3个软件包,这些软件包都是与sendmail服务器相关的,需要安装上去。 # mount /dev/cdrom /media/cdrom # cd /media/cdrom/RedHat/RPMS/ # ls sendmail* sendmail-cf-8.13.1-2.i386.rpm sendmail-doc-8.13.1-2.i386.rpm sendmail-devel-8.13.1-2.i386.rpm # rpm -ivh sendmail* warning: sendmail-cf-8.13.1-2.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### [100%] 1:sendmail-doc ########################################### [ 33%] 2:sendmail-cf ########################################### [ 67%] 3:sendmail-devel ########################################### [100%] 二、启动senmdmail服务 # service sendmail start Starting sendmail: [ OK ] Starting sm-client: [ OK ] sendmail服务器的运行将启动sendmail和sm-client两个服务程序。 配置文件sendmail.cf和sendmail.mc sendmail的主配置文件使sendmial.cf,由于该文件的格式很难理解,所以基本上不直接对它进行编辑,以免出错。正因为如此,sendmail的开发人员提供了容易理解和配置的sendmail.mc文件,我们可以通过修改这个配置文件,然后使用m4命令由sendmail.mc文件生成sendmail.cf文件。 开启sendmail服务器的网络端口 sendmail服务器出于安全考虑,默认只对lo网络端口提供服务,为了使服务能够为主机的的所有网络接口提供服务,需要在sendmail.mc文件中进行配置的修改。 # vi /etc/mail/sendmail.mc //找到下列这一行 DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl //修改为: DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl 修改后,需要将sendmail.mc文件生成sendmail.cf文件。 # cd /etc/mail/ //为配置文件所在目录 # m4 sendmail.mc > sendmail.cf 在sendmail服务器中,使用access.db数据库进行基于主机地址的访问控制,为了安全起见,sendmail默认关闭了为除本机以外的任何客户端RELAY邮件的功能,在现实使用中,可以打开其为本地网络RELAY邮件的功能,通过修改access文件来实现。 在sendmail下的.db文件中,都会对应有一个文本文件叫数据库配置文件,它是用来进行管理的。当我们对它进行相应的配置后,需要使用makemap命令将数据库配置文件生成.db的数据库文件,因为sendmail服务器只能识别.db的数据库文件的配置内容。 # vi /etc/mail/access 192.168.0 RELAY //允许192.168.0.0网段的所有主机RELAY. # makemap hash access.db <access 在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:[email protected] //设置发信人的地址 250 2.1.0 [email protected]... Sender ok rcpt to:[email protected] //设置收信人的地址 250 2.1.5 [email protected]... 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:[email protected] rcpt to:[email protected] data subject:nihao aa welcom welcome welcome . quit 下面我们切换到aa里面去看看 # su - aa No mail for aa 去bb中看看 # su - bb N 3 [email protected] Tue Jun 17 10:19 13/501 "nihao aa" & 3 Message 3: From [email protected] Tue Jun 17 10:19:58 2008 Date: Tue, 2008 10:19:19 +0800 From: root <[email protected]> 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,电子邮件地址填写[email protected] 在电子邮件服务器名中设置接收和发送邮件的邮件服务器地址 接收邮件服务器为:192.168.0.11 发送邮件的服务器为:192.168.0.11 下面按向导完成 下面就可以发送邮件了 指明收件人为:[email protected] 填写相关内容后,点击发送。 这时回到服务器中,可以看到下面一条信息 You have new mail in /var/spool/mail/root 然后查看一下: >N 4 [email protected] Tue Jun 17 10:42 24/761 "qqqqqqqqqqqq" & 4 Message 4: From [email protected] Tue Jun 17 10:42:21 2008 From: "bb" <[email protected]> To: <[email protected]> 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 </etc/mail/access 重新启动sendmail服务 # service sendmail restart 下面我们验证一下效果 打开OE,发送邮件,会发现发送不出去,出现信息: 由于服务器拒绝接受发件人的电子邮件地址,这封邮件无法发送。发件人的电子邮件地址是“[email protected]”。 主题 'fdsaf', 帐户: '192.168.0.11', 服务器: '192.168.0.11', 协议: SMTP, 服务器响应: '530 5.7.0 Authentication required', 端口: 25, 安全(SSL): 否, 服务器错误: 530, 错误号: 0x800CCC78 这是我们知道到"工具"—"帐户"—"属性"在弹出的对话框中,选择"服务器",在最下面的"我的服务器要求身份验证"前面的框中打勾,这时再发送邮件,就可以发送出去了。 |
相关阅读 更多 +