大家好,我在redhat7.2中配置sendmail 已经成功了,我打算继续配置smtp的功能,但是我根据如下配置7。1的方式配置之后,发现,我同时可以使用认证smtp或不认证smtp的方式发信,等于没有意义的实现了smtp认证,请问高手,我该怎么处理?才好。
1. 选择‘服务器系统’安装Redhat 7.1 2. 进入目录 /usr/share/sendmail-cf/cf 。 如果你没有该目录,说明你还没有安装sendmail-cf-8.11.2-14 RPM包,从你的安装CD中安装它。 3. 修改文件redhat.mc如下 divert(-1) dnl This is the sendmail macro config file. If you make changes to this file, dnl you need the sendmail-cf rpm installed and then have to generate a dnl new /etc/sendmail.cf by running the following command: dnl dnl m4 /etc/mail/sendmail.mc > /etc/sendmail.cf dnl include(`../m4/cf.m4) VERSIONID(`linux setup for Red Hat Linux)dnl OSTYPE(`linux) define(`confDEF_USER_ID,``8:12)dnl undefine(`UUCP_RELAY)dnl undefine(`BITNET_RELAY)dnl define(`confAUTO_REBUILD)dnl define(`confTO_CONNECT, `1m)dnl define(`confTRY_NULL_MX_LIST,true)dnl define(`confDONT_PROBE_INTERFACES,true)dnl define(`PROCMAIL_MAILER_PATH,`/usr/bin/procmail)dnl define(`ALIAS_FILE, `/etc/aliases)dnl define(`STATUS_FILE, `/var/log/sendmail.st)dnl define(`UUCP_MAILER_MAX, `2000000)dnl define(`confUSERDB_SPEC, `/etc/mail/userdb.db)dnl define(`confPRIVACY_FLAGS, `authwarnings,novrfy,noexpn,restrictqrun)dnl define(`confAUTH_OPTIONS, `A)dnl define(QUEUE_DIR,`/var/spool/mqueue/q*) TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnl define(`confAUTH_MECHANISMS, `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnl DAEMON_OPTIONS(`Port=25,Name=MTA)dnl DAEMON_OPTIONS(`Port=587,Name=MSA,M=Ea)dnl dnl define(`confTO_QUEUEWARN, `4h)dnl dnl define(`confTO_QUEUERETURN, `5d)dnl dnl define(`confQUEUE_LA, `12)dnl dnl define(`confREFUSE_LA, `1 dnl dnl FEATURE(delay_checks)dnl FEATURE(`no_default_msa,`dnl)dnl FEATURE(`smrsh,`/usr/sbin/smrsh)dnl FEATURE(`mailertable,`hash -o /etc/mail/mailertable)dnl FEATURE(`virtusertable,`hash -o /etc/mail/virtusertable)dnl FEATURE(redirect)dnl FEATURE(always_add_domain)dnl FEATURE(use_cw_file)dnl FEATURE(use_ct_file)dnl FEATURE(local_procmail)dnl FEATURE(`access_db)dnl FEATURE(`blacklist_recipients)dnl EXPOSED_USER(`root)dnl dnl This changes sendmail to only listen on the loopback device 127.0.0.1 dnl and not on any other network devices. Comment this out if you want dnl to accept email over the network. dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA) dnl We strongly recommend to comment this one out if you want to protect dnl yourself from spam. However, the laptop and users on computers that do dnl not have 24x7 DNS do need this. dnl FEATURE(`accept_unresolvable_domains)dnl dnl FEATURE(`relay_based_on_MX)dnl MAILER(smtp)dnl MAILER(procmail)dnl 其中,我加了下面的行: 1. define(QUEUE_DIR,`/var/spool/mqueue/q*) 2. TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnl 3. define(`confAUTH_MECHANISMS, `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnl 4. DAEMON_OPTIONS(`Port=25,Name=MTA)dnl 5. DAEMON_OPTIONS(`Port=587,Name=MSA,M=Ea)dnl 注: 第1行 我启动了多个邮件队列,希望得到更好的队列处理和性能改进。 第2,3行 移走前面的注释,打开相应的各种认证机制。 第4,5行 设置相应的MTA和MSA所在的端口号。 且注释出了 1. dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA) 2. dnl FEATURE(`accept_unresolvable_domains)dnl 第1行 允许通过网络连接Sendmail。 第2行 禁止不可解析的域名relay邮件 最后运行 #m4 /etc/mail/sendmail.mc > /etc/sendmail.cf 写到/etc/sendmail.cf文件中 既然我们打开了多个队列,现在我们在/var/spool/mqueue/下创建任意多个队列目录如 #cd /var/spool/mqueue #mkdir q1 q2 q3 q4 q5 q6 这样Sendmail将会使用这六个目录做为队列目录,增加了性能。 五: 设置SASL认证方案 1. 运行下面的命令,确保SASL被编译进Sendmail. #/usr/sbin/sendmail -d0.1 -bv root |grep SASL 输出应该类似如下面: NETUNIX NEWDB QUEUE SASL SCANF SMTP USERDB XDEBUG 确保你能看见上面的文本中的 SASL 2. 测试端口25,确保输出AUTH提示行。 #telnet localhost 25 Trying 127.0.0.1... Connected to smtp.domain.com. Escape character is ^]. 220 smtp.domain.com ESMTP Sendmail 8.11.2/8.11.2; Sun, 1 July 2001 17:56:54 -0800 EHLO localhost 250-smtp.domain.com Hello IDENT:root@smtp.domain.com [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-EXPN 250-VERB 250-8BITMIME 250-SIZE 250-DSN 250-ONEX 250-ETRN 250-XUSR 250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5 250 HELP quit 221 2.0.0 smtp.domain.com closing connection Connection closed by foreign host. 你需要至少看见AUTH行中有LOGIN PLAIN在那里,否则不能relay mail。 3. 增加SASL用户且更改密码 #/usr/sbin/saslpasswd jephe Password: ******* Again (for verification): ******* #/usr/sbin/sasldblistusers user: jephe realm: smtp.domain.com mech: DIGEST-MD5 user: jephe realm: smtp.domain.com mech: PLAIN user: jephe realm: smtp.domain.com mech: CRAM-MD5 用户的密码DB文件在/etc/sasldb,用下面的命令确保正确的许可权设置。 特别注意: 在下面的windows的Outlook Express中设置用户名和密码时并不是简单地使用用户名jephe,而是用象“user@realm”的用户名,在这里是 jephe@smtp.domain.com作为用户名。 #chmod 400 /etc/sasldb 可以用/usr/sbin/saslpasswd加更多的用户,用/usr/sbin/sasldblistusers检查用户已经加入。 4. 更改默认的Redhat 7.1密码认证方法 默认地,Redhat 7.1中的Sendmail用PAM方法检查密码,这意味着用户必须是系统用户,为了 增强安全性,我们改用/etc/sasldb中的用户,改下面的文件中的pam为sasldb。 #vi /usr/lib/sasl/Sendmail.conf 更改pwcheck_method行象下面 pwcheck_method:sasldb 5. 最后,运行/etc/rc.d/init.d/sendmail restart重新启动Sendmail。 六: 设置Windows的Outlook Express。 1. Outlook Express仅仅使用 PLAIN LOGIN 认证机制,确保上面的telnet localhost 25中的AUTH行 输出PLAIN LOGIN即可。 2. 在‘工具’-‘帐号’-‘属性’-‘服务器‘- ’发送邮件服务器’中选中‘我的服务器需要认证’ 然后在‘登录用户帐号’上填上 “你的用户名@你的realm冒号后面的服务器全称域名” 如:本文的情况是 jephe@smtp.domain.com 密码为你在前面输入的密码。 注意: 用户名绝不是简单地 jephe,必须跟上realm:后面的域名。 3. 现在测试,发一封信给自己,检查tail -f /var/log/maillog有无任何错误 然后在收到自己发出的信之后检查邮件头,你能发现被服务器接收后有个(authenticated)在后面表示是通过允许的认证机制relay的邮件。
| friendgxm 回复于:2002-05-23 11:40:41
| 你好,我按你的方法做了,但测试端口25时,AUTH行中没有出现LOGIN PLAIN,如何解决,谢谢
| | friendgxm 回复于:2002-05-24 13:33:10
| 你好,我按你的方法做了,但测试端口25时,AUTH行中没有出现LOGIN PLAIN,如何解决,谢谢
| | friendgxm 回复于:2002-05-24 13:34:29
| 我按上面的方法做了,但测试端口25时,AUTH行中没有出现LOGIN PLAIN,如何解决,谢谢
| | future00 回复于:2003-07-16 07:17:33
| 我也有同样的问题,谢谢回答
| |
|