默認情況下,RH的sendmail只允許外發email而允許接收外部來信(localhost當然可以了)。
要想能接收外來email,
首先更改sendmail.mc,找到:DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl更改為:DAEMON_OPTIONS(`Port=smtp,Addr=本機ip, Name=MTA')dnl然后,make -C /etc/mail重新編譯sendmail。
/etc/mail/access文件是允許轉發的網絡地址,可將局域網的網絡ip加進去,這樣,局域網內的任何其他的主機都可以通過本機sendmail來中轉,relay。修改完后makemap hash access.db < access即可。
Sendmail好像非常需要FQDN,類似aaa.bbb.com一類的完整域名。/etc/mail/local-host-name是sendmail需要的本地FQDN,必須的。另外,若沒有DNS,/etc/hosts和/etc/sysconfig/network兩個文件必須修改,添加正確的主機名稱,FQDN,別名等。hosts文件內的127那行,最好不要改動。那是localhost的初始定義。
這樣子修改好以后,可以防止日志中出現什么553,554的錯誤信息--那是因為A機和B機的sendmail擁有相同的localhost主機名稱。所以,FQDN,一定要設好。哪怕不用。這一切完了之后,重啟sendmail。小測一下:telnet localhost 25開頭如果出現aaa.bbb.com一類的FQDN,那就可以了。
Sendmail: localhost.localdomain 的問題
如果你也是用 Linux + Sendmail 架 mail server, 當你 telnet your.host.name 25 時,
若出現 localhost.localdomain, 表示 Linux Server 的 hostname 設定有誤. 這個問題並不大,
因為它還是可以正常的收 / 發 e-mail. 但是, 若寄給同樣是 localhost.localdomain 的 mail server
時, 問題就來了.
癥狀:
1. 收到退回的信件, 內容是:
553 5.3.5 對方的hostname. config error: mail loops back to me (MX problem?)
554 5.3.5 Local configuration error
2. 本機 /var/log/maillog 記錄出現:
SYSERR(root): 對方的hostname. config error: mail loops back to me (MX problem?)
3. 對方的 /var/log/maillog 記錄出現:
本機IP did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
原因:
由於本機主機名稱是 localhost.localdomain, 信件發出後, 若對方 Sendmail 主機名稱也是 localhost.localdomain 時, 信件會回到本機郵件伺服器上, 無法寄到對方郵箱中.
解決方法:
1. 知道自己正確的 hostname 為何 (通常是: 主機名稱.網域名稱, 如: myserver.abc.idv.tw, 其中 myserver 是主機名稱; abc.idv.tw 是網域名稱)
2. 執行 hostname 指令, 查看 hostname 是否正確
3. cat /etc/sysconfig/network, 查看 hostname 是否設定正確, 若不正確請修改後, 執行:
hostname 正確的hostname
4. cat /etc/hosts 檢查 127.0.0.1 那一行是否只有 localhost 與
localhost.localdomain 這兩種敘述. 若否, 請清除不相干的敘述, 並確定是否有如: 192.168.1.1
myserver.abc.idv 描述正確 hostname 的文字列. 若無, 請新增空白行加入該敘述.
5. /etc/rc.d/init.d/sendmail restart 重新啟動 Sendmail
6. telnet localhost 25 檢查是否出現正確的 hostname