2011年8月25日

using sendmail as smtp client

在客戶的環境有時不能直接發送郵件,而是要利用客戶端的郵件伺服器發送,這通常透過sendmail.cf 的 DS 參數設定就好,但客戶環境有時會需要帳號密碼驗證才能 relay ,這時就需要了解客戶是採用哪種方式驗證,可以透過 telnet 來了解,如下:
shell># telnet mail.test.com.tw 25
Trying 60.199.200.208...
Connected to mail.test.com.tw
Escape character is '^]'.

220 mail.test.com.tw ESMTP Postfix

ehlo localhost
250-mail.test.com.tw
250-PIPELINING
250-SIZE 30760000
250-VRFY
250-ETRN
250-AUTH PLAIN CRAM-MD5 DIGEST-MD5 LOGIN
250-AUTH=PLAIN CRAM-MD5 DIGEST-MD5 LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN


從回應的 AUTH 參數可以了解到這台郵件主機是採用 PLAIN CRAM-MD5 DIGEST-MD5 LOGIN 這幾種方式驗證,若確定要採用 CRAM-MD5 DIGEST-MD5 這兩種方式驗證,自己的 sendmail 也要支援才能相互溝通,一樣可以使用 telnet 來驗證自己的主機是否支援。

接下來設定 sendmail smtp auth 時的帳號密碼資訊
shell># vim /etc/mail/authinfo
新增以下資訊
AuthInfo:other.dom "U:user" "I:user" "P:secret" "M:DIGEST-MD5 CRAM-MD5"
shell># makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo

確保帳密資訊安全
shell># chmod 600 authinfo

增加以下的 sendmail 參數
shell># vim /etc/mail/sendmail.mc
define(`SMART_HOST', 'mail.test.com.tw')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE('authinfo', 'hash /etc/mail/authinfo')dnl

產生 sendmail.cf
shell># m4 sendmail.mc > sendmail.cf

重新啟動sendmail
shell># service sendmail restart

參考文獻
sendmail Auth

沒有留言:

張貼留言