• sendmail中關於只認access控制文件的問題


    目標是建一個支持SMTP認證服務器.
    我安裝的是REDHAT AdvanceServer 3,系統自帶的是sendmail8.12.10,我直接升級到sendmail 8.13.1後編譯安裝了cyrus-sasl-2.1.19,telnet localhost 25信息如下:
    [root@freemail mail]# telnet localhost 25
    Trying 127.0.0.1...
    Connected to localhost.localdomain (127.0.0.1).
    Escape character is '^]'.
    220 freemail.161.com ESMTP Sendmail 8.12.11/8.12.11; Fri, 3 Sep 2004 09:29:22 +0800
    ehlo sd
    250-freemail.161.com Hello localhost.localdomain [127.0.0.1], pleased to meet you
    250-ENHANCEDSTATUSCODES
    250-PIPELINING
    250-EXPN
    250-VERB
    250-8BITMIME
    250-SIZE
    250-DSN
    250-ETRN
    250-AUTH LOGIN PLAIN
    250-DELIVERBY
    250 HELP
    250-AUTH LOGIN PLAIN出現應該是已經支持SMTP認證了.
    我的ACCESS文件內容:
    localhost.localdomain RELAY
    localhost RELAY
    127.0.0.1 RELAY
    問題就出現了,我用客戶端OUTLOOK發信,始終說我IP不在支持範圍:
    Sep 3 09:32:57 freemail sendmail[3805]: i831Wjej003805: ruleset=check_rcpt, arg1=<microsea@go.com>, relay=[208.5.5.145], reject=550 5.7.1 <microsea@go.com>... Relaying denied. IP name lookup failed [208.5.5.145]
    Sep 3 09:33:00 freemail sendmail[3805]: i831Wjej003805: from=<microsea@161.com>, size=0, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=[208.5.5.145]
    我只好在access文件中加入208.5.5 RELAY,但是這樣一加,SMTP認證就失效了,只要是208.5.5網段的都可以發信.試來試去始終是access文件生效,走不到smtp認證這一步,應該是SMTP認證先於access文件吧?
    大家有沒碰到過這樣的情況?如何解決?急盼!

    Re: sendmail中關於只認access控制文件的問題

    終於搞定了,原來是sasl沒配置好的原因!!而且sasl 2版本和1有些不一樣,被它搞s了,以下是配置步驟給大家分享一下:
    * 安裝cyrus-sasl-2.1.19下載地址: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
    ./configure --enable-login
    make
    make install
    安裝完成後,要仔細檢查sasl的函數庫位置,否則會給後面的配置帶來很多問題.
    缺省情況下,所有的庫函數安裝到/usr/local/lib目錄下,但sendmail使用的庫函數是在目錄/usr/lib下的,所以需要做一些調整。
    cd /usr/lib
    ln /usr/local/lib/sasl2/ ./sasl -s
    在/usr/lib/sasl目錄下建立文件Sendmail.conf,加入如下一行
    pwcheck_method:saslauthd #-------->很關鍵啊!!
    檢查saslauthd的配置:
    首先檢查/usr/lib/sasl/Sendmail.conf裡的那句話是否使用的是saslauthd,
    其次檢查/etc/sysconfig/saslauthd這個文件,將裡面的:
    MECH=pam改為MECH=shadow
    然後啟動/etc/rc.d/init.d/saslauthd start,查看進程是否有以下進程:
    root 5093 1 0 13:39 ? 00:00:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a shadow
    root 5094 5093 0 13:39 ? 00:00:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a shadow
    root 5095 5093 0 13:39 ? 00:00:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a shadow
    root 5096 5093 0 13:39 ? 00:00:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a shadow
    root 5098 5093 0 13:39 ? 00:00:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a shadow
    如果以上sasl模塊沒有生效,sendmail將會跳過認證直接讀取access文件來判斷是否允許relay.通常就會出現:
    Sep 1 15:57:31 freemail sendmail[16694]: i817vP38016694: ruleset=check_rcpt, arg1=<microsea@126.com>, relay=[222.5.5.145], reject=550 5.7.1 <microsea@126.com>... Relaying denied. IP name lookup failed [222.5.5.145]
    Sep 1 15:57:44 freemail sendmail[16694]: i817vP38016694: from=<microsea@go2north.com>, size=0, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=[222.5.5.145]
    這樣的錯誤
    * 編譯和配置sendmail
    解壓sendmail軟件到你希望的目錄,進入sendmail-8.12.11目錄。
    在devtools/Site/目錄下創建config.site.m4文件,加入如下文字,把SMTP認證
    功能編譯到sendmail中。
    PREPENDDEF(`confMAPDEF', `-DMAP_REGEX')
    PREPENDDEF(`confOPTIMIZE', `-O6')
    PREPENDDEF(`confOPTIMIZE', `-O6')
    APPENDDEF(`confENVDEF', `-DSASL=2')
    APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')
    APPENDDEF(`confLIBDIRS', `-L/usr/local/lib -L/usr/local/lib/sasl2')
    APPENDDEF(`confINCDIRS', `-I/usr/local/include -I/usr/local/include/sasl')
    回到sendmail-8.12.11目錄,再進入sendmail目錄,開始編譯sendmail。
    ./Build -c(如果不是第一次編譯,需要加入-c選項,清除以前的配置)
    編譯成功後,運行./Build install安裝軟件。
    接下來編輯 sendmail 設置範本文件以便產生出具有身份認證功能的 sendmail.cf 設置檔,請以下列指令執行
    # cd cf/cf
    # cp generic-linux.mc MYCF.mc
    # cd ../feature
    # cat access_db.m4 >> ../cf/MYCF.mc
    # cat delay_checks.m4 >> ../cf/MYCF.mc
    # cat virtusertable.m4 >> ../cf/MYCF.mc
    # cd ../cf
    # cat >> MYCF.mc
    TRUST_AUTH_MECH(`LOGIN PLAIN')dnl
    define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
    ^D
    # sh Build MYCF.cf
    # mkdir /etc/mail
    # cp MYCF.cf /etc/mail/sendmail.cf
    # cd /etc/mail
    # cat > access
    localhost.localdomain RELAY
    localhost RELAY
    127.0.0.1 RELAY
    說明:"TRUST_AUTH_MECH"的作用是使sendmail不管access文件中如何設置,都能
    relay那些通過LOGIN,PLAIN或DIGEST-MD5方式驗證的郵件。
    "confAUTH_MECHANISMS"的作用是確定系統的認證方式。
    "confDEF_AUTH_INFO"的作用是當你的計算機作為客戶機時,向另外一台有smtp認
    證功能的主機進行認證,用戶和密碼存放在auth-info文件中,在這個例子中並不需要這
    個功能,所以註釋掉了。
    現在基本上可以了,啟動sendmail讓我們來測試一下吧
    sendmail -bd -q20m
    運行下面命令
    [root@freemail mail]# telnet 222.5.5.55 25
    Trying 222.5.5.55...
    Connected to freemail.161mail.com (222.5.5.55).
    Escape character is '^]'.
    220 freemail.161mail.com ESMTP Sendmail 8.12.11/8.12.11; Thu, 2 Sep 2004 16:09:18 +0800
    ehlo localhost
    250-freemail.161mail.com Hello freemail.161mail.com [222.5.5.55], pleased to meet you
    250-ENHANCEDSTATUSCODES
    250-PIPELINING
    250-EXPN
    250-VERB
    250-8BITMIME
    250-SIZE
    250-DSN
    250-ETRN
    250-AUTH LOGIN PLAIN
    250-DELIVERBY
    250 HELP
    quit
    221 2.0.0 freemail.161mail.com closing connection
    Connection closed by foreign host.
    有出現250-AUTH LOGIN PLAIN說明sendmail提供認證功能了,再用outlook或其它客戶端軟件測試一下!

    --------------------- 我可以操纵冰冷的代码,但我操纵不了我的人生...... [url=http://www.puya360.com]西安普雅软件工作室[/url]
  • 相关阅读:
    jenkins结合cygwin软件实现从centos发布代码rsync到windows server2019的过程
    ansible的playbook创建nginx站点配置示例
    windows环境下搭建redis/php7.2/nginx1.18环境
    aws亚马逊购买负载均衡alb和ec2服务器备注
    Window server 2019安装.net3.5并通过jenkins发布c#代码
    windows server2019环境下安装openssh进行jenkins代码golang发布
    进程管理脚本包括start/stop/restart/status
    通过dockerfile制作基于centos8系统的nginx镜像
    创建基于harbor的docker仓库
    jenkins配置添加windows节点做ui自动化测试
  • 原文地址:https://www.cnblogs.com/ternastone/p/1847272.html
Copyright © 2020-2023  润新知