zoukankan      html  css  js  c++  java
  • sendmail邮件服务器搭载smtp和pop3认证的配置方法

    sendmail邮件服务器搭载smtp和pop3认证的配置方法

    42人阅读 评论(0) 收藏 举报

    网上介绍sendmail的文章千百种,很少有跟着做下来一次成功的。多少都有些说的不准确的地方。我给大家共享一下我经过实验环境测试,完全可行的方法。

    1.软件准备

    操作系统:centos5.0

    我选择centos5,最新的操作系统,不要再用redhat9了,很久没有更新了,企业里用有风险的。更新换代吧。

    以下软件,centos5全部自带,无需另外下载。

    邮件系统:
                   sendmail8.13
                   sendmail-cf-8.13
                   m4-1.4

    pop3认证:dovecot-1.0

    smtp认证:
            cyrus-sasl-2.1
            cyrus-sasl-md5-2.1
            cyrus-sasl-plain-2.1
              cyrus-sasl-lib-2.1

    sasl这里,我要说一句,网上有人说“sendmail-8.13已经包含cyrus-sasl的功能,所没必要再安装cyrus-sasl”
    大 哥大姐们,没有cyrus-sasl用什么做认证.....sendmail官方只是说,sendmail的rpm包默认已经支持了cyrus-sasl 认证方式,也就是说,sendmail会在cyrus-sasl的工作目录下自动创建相关认证配置文件,并监听25号端口,就不用你去手动自己建立配置文 件和监听端口了。当有请求进入25号端口的时候,sendmail会自动找到/usr/lib/sasl2/Sendmail.conf读取认证方法。下 面我会详细解释。

    2.安装软件

    rpm -ivh把上面软件全装上,都在光盘里呢,好装。

    3.认证配置

    pop3:

    网上说修改/etc/dovecot.conf文件,将第17行的:#protocols = imap imaps pop3 pop3s的#去掉。其实不用,它默认已经启用了这些服务,除非你只想用dovecot-auth的认证,你可以改成protocols = none,否则不用改。

    smtp:
    注意,smtp稍微麻烦一下。

    我讲下原理:

    当用户请求进入 25号端口后,sendmail调用cyrus-sasl的saslauthd进程,saslauthd要求对方输入本地系统用户的用户名和密码,当用户 输入好后,saslauthd会去查找系统的/etc/shadow文件,密码确认无误,放行,告诉sendmail,这个用户合法,可以使用邮件服务来 发邮件。

    这时候你去/usr/lib/sasl2/下看看,sendmail已经做好了一个sendmail.conf文件,里面指明了:pwcheck_method=saslauthd,说明sendmail认证时就要调用saslauthd
    所以要实现上述功能,就要设置cyrus-sasl的saslauthd,给它指定认证方式。
    首先,进入/etc/sysconfig/,打开saslauthd的脚本,找到第7行的:

    MECH=

    等号后面不管写什么,我们都要改成:

    MECH=shadow

    保存

    这样saslauthd才会去找shadow文件给用户做认证。


    其实saslauthd还可以用自己的用户名和密码数据库做验证,但这样不方便,还要另外创建用户,不如直接用系统自身存在的用户名和密码。


    4.Sendmail配置.

    配置邮件服务器名称:

    打开/etc/mail/local-host-names
    加入你 @后面的邮箱地址。比如我这里是otto@linuxedentest.com
    那么,你要在local-host-names文件里的第二行添加:
    linuxedentest.com
    保存

    当然
    local-host-names还可以设置邮箱别名,这个不多说,大家查文档看看。

    改好后还要去你的dns服务器上,打上mx标志,添加A标记,用来解析dns名和地址。具体方法就要查查bind的设置方法了,或者win2003的dns设置方法。


    配置sendmail.mc:

    打开/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注释去掉,变成:

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

    上面两句的意思是:

    放行那些通过EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮件用户,无视access文件中的设置。

    confAUTH_MECHANISMS,确定系统支持的认证方式。LOGIN PLAIN 方式下,outlook用的多。


    还不算完,找到:

    dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, )dnl

    改成:

    DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, )dnl

    这样所有ip地址都可以通过smtp端口使用我们的邮件服务器了。


    -----------------------------------------------------------
    这里要说一句,不要改

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

    这句话!保持注释状态。

    上面那句话,网上好多文章都说把Port=submission,改成Port=25,说是强制所有用户在25端口上做认证。

    我不知道sendmail以前的版本是怎么样设置smtp认证的。sendmail8.13不用这么设置,这句话人家sendmail的意思是:取消注释后,一旦当25号端口被重定向或者被屏蔽,或者在25号端口打不开的情况下,马上使用587备用端口给用户做认证。

    本来人家sendmail就已经打开了25端口(Port=smtp了已经),你却在这里还Port=25,把备用端口也改成25,这不是让sendmail的sm-client认

    证进程和sendmail的主进程抢端口么....

    -----------------------------------------------------------


    到此为止,保存sendmail.mc


    用m4重新生成sendmail.cf文件

    # m4 /etc/mail/sendmail.mc > /etc/sendmail.cf


    启动dovecot进程:
    /etc/init.d/dovecot start

    启动saslauthd进程:
    /etc/init.d/saslauthd start

    启动sendmail进程:
    /etc/init.d/sendmail start


    把这些进程加入到启动脚本中去:
    chkconfig dovecot on
    chkconfig saslauthd on
    chkconfig sendmail on


    ok,所有设置全部完成,可以正常认证和收发邮件了。

  • 相关阅读:
    Akka(33): Http:Marshalling,to Json
    Akka(32): Http:High-Level-Api,Route exception handling
    Akka(31): Http:High-Level-Api,Route rejection handling
    Akka(30): Http:High-Level-Api,Routing DSL
    Akka(29): Http:Server-Side-Api,Low-Level-Api
    Akka(28): Http:About Akka-Http
    Akka(27): Stream:Use case-Connecting Slick-dbStream & Scalaz-stream-fs2
    Akka(26): Stream:异常处理-Exception handling
    Akka(25): Stream:对接外部系统-Integration
    Akka(24): Stream:从外部系统控制数据流-control live stream from external system
  • 原文地址:https://www.cnblogs.com/weaver1/p/2305744.html
Copyright © 2011-2022 走看看