2008-09-04 144 views
6

我在防火牆後面的網絡上設置了一臺服務器,我希望這臺計算機上的程序能夠使用sendmail將電子郵件發送到任何電子郵件地址。我們有一個運行在這個網絡上的SMTP服務器(我們稱之爲mailrelay.example.com),這就是我們應該如何通過防火牆傳出電子郵件。在防火牆後面配置sendmail

那麼如何配置sendmail通過mailrelay.example.com發送所有郵件?谷歌搜索尚未給出答案,並且只顯示sendmail配置非常複雜和煩人。

回答

11

@eli:通常不建議直接修改sendmail.cf,因爲它是由宏編譯器生成的。

編輯/etc/mail/sendmail.mc,以包括行:

define(`SMART_HOST',`mailrelay.example.com')dnl 

改變sendmail.mc宏配置文件後,必須重新編譯 以產生sendmail配置文件。

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

,並重新啓動sendmail服務(Linux)的:

# /etc/init.d/sendmail restart 

以及設置智能主機,你可能想也禁用名稱解析配置,並可能改變你的sendmail的非標準端口,或禁用守護進程模式。

禁用名稱解析

服務器是防火牆保護的網絡內或使用網絡地址 轉換(NAT)可能沒有可用的DNS或NIS服務。這將創建 sendmail的一個問題,因爲它會使用默認的DNS,如果它不是 可用,你會看到在MAILQ這樣的消息:

host map: lookup (mydomain.com): deferred) 

除非你準備設置一個適當的DNS或NIS sendmail可以使用的服務,在這種情況下,您通常會使用/ etc/hosts文件配置名稱爲 的分辨率。這是通過使一個 「service.switch」文件,並通過文件中指定的分辨率完成,如下:

1:啓用sendmail的 編輯/etc/mail/sendmail.mc,service.switch以包括行:

define(`confSERVICE_SWITCH_FILE',`/etc/mail/service.switch')dnl 

2:配置文件service.switch 創建或修改/etc/mail/service.switch僅指在/ etc /的名稱 解析主機:

# cat /etc/mail/service.switch 
    hosts files 

3:Recompil e sendmail.mc並重新啓動sendmail以使此設置生效。

轉移到sendmail的非標準端口,或禁用daemon模式

默認情況下,sendmail的將偵聽端口25,您可能希望完全更改此端口 或禁用的sendmail daemon模式因各種原因: - 如果存在禁止使用知名端口的安全策略 - 如果另一個SMTP產品/進程要在標準端口 上的同一主機上運行 - 如果您不想通過smtp接收郵件,只需使用sendmail發送

1:將sendmail轉移到使用非標準端口。 編輯/etc/mail/sendmail.mc,並修改 「端口」,在線路設置:

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

例如,要獲得sendmail的使用端口125:

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

這將需要的sendmail .mc被重新編譯,sendmail被重新啓動。

2:可替代地,禁用sendmail守護程序模式完全(Linux)的 編輯/ etc/SYSCONFIG/sendmail和修改 「守護進程」 設置爲:

DAEMON=no 

這一變化將需要sendmail的重新啓動。

+0

謝謝!關於`service.switch`的提示解決了我的問題。 – 2011-08-09 02:41:40

5

http://www.elandsys.com/resources/sendmail/smarthost.html

Sendmail的智能主機

智能主機是通過其 傳出郵件被中繼的主機。某些ISP 阻止傳出SMTP流量(端口25) 並要求其用戶通過ISP的郵件 服務器發送出 所有郵件。 Sendmail可以配置爲 使用ISP的郵件服務器作爲智能 主機。

閱讀指令鏈接的文章如何設置此。

3

@Espo:感謝您從何處着手的偉大建議。如果我已經將sendmail配置爲首次使用,而不是採用現有配置並進行此小改動,那麼您的鏈接會更好。然而,一旦我知道在「SmartHost」上尋找東西,我發現了一個更簡單的方法。

我所要做的就是編輯我的/etc/mail/sendmail.cf文件來改變

DS 

DSmailrelay.example.com 

然後重新啓動sendmail和它的工作。