带认证的sendmail + dovecot + cyrus-sasl 配置

软件的安装:

用来进行认证的cyrus-sasl软件

用来提供发信服务的 postfix

用来提供POP3服务的dovecot

[@more@]

一、软件的安装

用来进行认证的cyrus-sasl软件

用来提供发信服务的 postfix

用来提供POP3服务的dovecot

[root@mailnew mail]# rpm -qa | grep cyrus-sasl

cyrus-sasl-plain-2.1.19-5.EL4

cyrus-sasl-2.1.19-5.EL4

cyrus-sasl-md5-2.1.19-5.EL4

cyrus-sasl-devel-2.1.19-5.EL4

[root@mailnew mail]# rpm -qa | grep sendmail

sendmail-8.13.1-2

sendmail-cf-8.13.1-2

[root@mailnew mail]#

[root@mailnew mail]# rpm -qa | grep dovecot

dovecot-0.99.11-2.EL4.1

使用rpm –ivh rpm包名的方式来安装即可。

二、Cyrus-sasl的配置和启动

1 Cyrus-sasl软件包安装后, 会将些库文件在/usr/lib/sasl2目录中。手工建立一个软链接:

ln –s /usr/lib/sasl2 /usr/local/lib/sasl2

2 /usr/lib/sasl2目录中 生成了Sendmail.conf smtpd.conf 两个文件,文件内容一致,都如下:

pwcheck_method:saslauthd

saslauthd_path:/var/run/saslauthd/mux

3 启动sasl 服务

运行命令 /etc/init.d/saslauthd start

4 测试服务启动

[root@mailnew sasl2]# testsaslauthd -u xzy -p xzypssword

0: OK "Success."

出现这行信息,表示 sasl 服务启动成功。

5 cyrus-sasl服务加入到机器启动中

Chkconfig –level 35 saslauthd on

运行这行后,将在/etc/rc3.d /etc/rc5.d 中建立文件链接到 /etc/rc.d/init.d/saslauthd

# ls -l /etc/rc3.d/*saslauthd*

lrwxrwxrwx 1 root root 19 Feb 5 09:45 /etc/rc3.d/S95saslauthd -> ../init.d/saslauthd

三、Sendmail 的配置和启动

我之前安装过dovecot ,后来又换用sendmail 一直不成功。后来发现是有几个相关的文件要建立好。

1 建立 /etc/pam.d/smtp /etc/pam.d/smtp.sendmail. ,内容为:

#%PAM-1.0

auth required pam_stack.so service=system-auth

account required pam_stack.so service=system-auth

并将该目录下的 smtp.postfix 删除。

2 /usr/lib/sasl2/Sendmail.conf 上面以介绍,不重复。

3 根据需要重新编译sendmail

3.1 编辑 /etc/mail/sendmail.mc 文件, 具体按照下面的文件配置说明进行修改;

3.2 运行 m4 /etc/amil/sendmail.mc > /etc/sendmail.cf 生成 sendmail 服务的配置文件;

4 修改 sendmail 服务相关配置文件

41 修改 /etc/mail/access 文件 (202.31.10.104 这是邮件服务器共网IP地址)

添加如下内容:

localhost.localdomain RELAY

localhost RELAY

127.0.0.1 RELAY

172.16.28.10 RELAY

202.31.10.104 DENY

然后运行 makemap hash /etc/mail/access.db < /etc/mail/access 更新access.db 数据库内容。

4.2 修改/etc/mail/local-host-names 文件内容,将本机需要收邮件的域名都写入,一行一个:

# local-host-names - include all aliases for your machine here.

localhost

tem.mycompany.com

mycompany.com

mail. mycompany.com

如果没有将域名写入,而DNS又进行了配置,将某域名的邮件服务器指向进行配置的服务器,(比如发给user@mail.channelbeyond.com ,local-host-names 中没有mail.channelbeyond.com 这一行信息。)就会报错类似如下:

Feb 4 05:46:21 mail sendmail[26777]: l13HkLxU031742: SYSERR(root): extra.channelbeyond.com. config error: mail loops back to me (MX problem?)

4.3 修改/etc/sendmail.cf 文件,限制单个邮件最大值为12M

# maximum message size

#O MaxMessageSize=0

MaxMessageSize=12000000

5 启动sendmail 服务,运行命令:

/etc/init.d/sendmail start

测试服务是否正常

在客户端机器中配置使用该服务器来进行邮件收发。要选择“发信需要身份验证”,看是否成功。不选择“发信需要身份验证”,看是否可以把邮件发到外部。

6) 下面是sendmail.mc 详细内容及说明

红色字体的是需要修改的行。

divert(-1)dnl

dnl #

dnl # This is the sendmail macro config file for m4. If you make changes to

dnl # /etc/mail/sendmail.mc, you will need to regenerate the

dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is

dnl # installed and then performing a

dnl #

dnl # make -C /etc/mail

dnl #

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl

VERSIONID(`setup for Red Hat Linux')dnl

OSTYPE(`linux')dnl

dnl #

dnl # default logging level is 9, you might want to set it higher to

dnl # debug the configuration

dnl #

dnl define(`confLOG_LEVEL', `9')dnl

dnl #

dnl # Uncomment and edit the following line if your outgoing mail needs to

dnl # be sent out through an external mail server:

dnl #

dnl define(`SMART_HOST',`smtp.your.provider')

dnl #

define(`confDEF_USER_ID',``8:12'')dnl

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/mail/statistics')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

dnl #

dnl # The following allows relaying if the user authenticates, and disallows

dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links

dnl #

dnl define(`confAUTH_OPTIONS', `A p')dnl

dnl #

dnl # PLAIN is the preferred plaintext authentication method and used by

dnl # Mozilla Mail and Evolution, though Outlook Express and other MUAs do

dnl # use LOGIN. Other mechanisms should be used if the connection is not

dnl # guaranteed secure.

dnl # Please remember that saslauthd needs to be running for AUTH.

dnl #

define(QUEUE_DIR, `/var/spool/mqueue/q*')

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

dnl #

dnl # Rudimentary information on creating certificates for sendmail TLS:

dnl # cd /usr/share/ssl/certs; make sendmail.pem

dnl # Complete usage:

dnl # make -C /usr/share/ssl/certs usage

dnl #

dnl define(`confCACERT_PATH',`/usr/share/ssl/certs')

dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')

dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')

dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')

dnl #

dnl # This allows sendmail to use a keyfile that is shared with OpenLDAP's

dnl # slapd, which requires the file to be readble by group ldap

dnl #

dnl define(`confDONT_BLAME_SENDMAIL',`groupreadablekeyfile')dnl

dnl #

dnl define(`confTO_QUEUEWARN', `4h')dnl

dnl define(`confTO_QUEUERETURN', `5d')dnl

dnl define(`confQUEUE_LA', `12')dnl

dnl define(`confREFUSE_LA', `18')dnl

define(`confTO_IDENT', `0')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.db')dnl

FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl

FEATURE(redirect)dnl

FEATURE(always_add_domain)dnl

FEATURE(use_cw_file)dnl

FEATURE(use_ct_file)dnl

dnl #

dnl # The following limits the number of processes sendmail can fork to accept

dnl # incoming messages or process its message queues to 12.) sendmail refuses

dnl # to accept connections once it has reached its quota of child processes.

dnl #

dnl define(`confMAX_DAEMON_CHILDREN', 12)dnl

dnl #

dnl # Limits the number of new connections per second. This caps the overhead

dnl # incurred due to forking new sendmail processes. May be useful against

dnl # DoS attacks or barrages of spam. (As mentioned below, a per-IP address

dnl # limit would be useful but is not available as an option at this writing.)

dnl #

dnl define(`confCONNECTION_RATE_THROTTLE', 3)dnl

dnl #

dnl # The -t option will retry delivery if e.g. the user runs over his quota.

dnl #

FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl

FEATURE(`access_db',`hash -T -o /etc/mail/access.db')dnl

FEATURE(`blacklist_recipients')dnl

EXPOSED_USER(`root')dnl

dnl #

dnl # The following causes sendmail to only listen on the IPv4 loopback address

dnl # 127.0.0.1 and not on any other network devices. Remove the loopback

dnl # address restriction to accept email from the internet or intranet.

dnl #

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

dnl #

dnl # The following causes sendmail to additionally listen to port 587 for

dnl # mail from MUAs that authenticate. Roaming users who can't reach their

dnl # preferred sendmail daemon due to port 25 being blocked or redirected find

dnl # this useful.

dnl #

dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl

DAEMON_OPTIONS('Port=25,Addr=0.0.0.0,Name=MTA, M=E')

dnl #

dnl # The following causes sendmail to additionally listen to port 465, but

dnl # starting immediately in TLS mode upon connecting. Port 25 or 587 followed

dnl # by STARTTLS is preferred, but roaming clients using Outlook Express can't

dnl # do STARTTLS on ports other than 25. Mozilla Mail can ONLY use STARTTLS

dnl # and doesn't support the deprecated smtps; Evolution <1.1.1 uses smtps

dnl # when SSL is enabled-- STARTTLS support is available in version 1.1.1.

dnl #

dnl # For this to work your OpenSSL certificates must be configured.

dnl #

dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl

dnl #

dnl # The following causes sendmail to additionally listen on the IPv6 loopback

dnl # device. Remove the loopback address restriction listen to the network.

dnl #

dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')dnl

dnl #

dnl # enable both ipv6 and ipv4 in sendmail:

dnl #

dnl DAEMON_OPTIONS(`Name=MTA-v4, Family=inet, Name=MTA-v6, Family=inet6')

dnl #

dnl # We strongly recommend not accepting unresolvable domains if you want to

dnl # protect yourself from spam. However, the laptop and users on computers

dnl # that do not have 24x7 DNS do need this.

dnl #

FEATURE(`accept_unresolvable_domains')dnl

dnl #

dnl FEATURE(`relay_based_on_MX')dnl

dnl #

dnl # Also accept email sent to "localhost.localdomain" as local email.

dnl #

LOCAL_DOMAIN(`localhost.localdomain')dnl

dnl #

dnl # The following example makes mail from this host and any additional

dnl # specified domains appear to be sent from mydomain.com

dnl #

dnl MASQUERADE_AS(`mydomain.com')dnl

dnl #

dnl # masquerade not just the headers, but the envelope as well

dnl #

dnl FEATURE(masquerade_envelope)dnl

dnl #

dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as well

dnl #

dnl FEATURE(masquerade_entire_domain)dnl

dnl #

dnl MASQUERADE_DOMAIN(localhost)dnl

dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl

dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl

dnl MASQUERADE_DOMAIN(mydomain.lan)dnl

MAILER(smtp)dnl

MAILER(procmail)dnl

文件内容说明:

1.增加:一行:

define(QUEUE_DIR, `/var/spool/mqueue/q*')

为了提高发信性能。增加该行后, 需要在/var/spool/mqueue目录下建立多个目录。比如,q1,q2,q3…等。

2 配置认证方法,这里,我选择的是sasl 认证方法:

先将下列两行前面的dnl注释去掉,成为如下:

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

然后要将下面DAEMON_OPTIONS信息屏蔽掉

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl

这样修改后,生成sendmail.cf 文件,并启动sendmail 服务。

telnet 172.16.28.9 25

[root@backup named]# telnet 172.16.28.9 25

Trying 172.16.28.9...

Connected to 172.16.28.9.

Escape character is '^]'.

220 mailnew.channelbeyond.com ESMTP Sendmail 8.13.1/8.13.1; Wed, 7 Feb 2007 15:24:51 +0800

ehlo localost

250-mailnew.channelbeyond.com Hello [172.16.0.9], pleased to meet you

250-ENHANCEDSTATUSCODES

250-PIPELINING

250-8BITMIME

250-SIZE

250-DSN

250-ETRN

250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN

250-DELIVERBY

250 HELP

可以看到,有250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN 这行信息。可是,实际上还是可以open relay

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13547/viewspace-900509/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13547/viewspace-900509/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值