Iptables
如何在 Linux 上通過 firewalld 啟用 SMTP 接收?
我從一家託管公司租用了一個專用的、輕度管理的 CentOS7 機器。該主機安裝並執行了firewalld ,並預先設置了iptables首選項。
我沒想到會這樣;我習慣於接收沒有防火牆的盒子,除了我打開的那些之外,它們上面沒有執行任何服務。我對firewalld和iptables知之甚少,並且正在努力通過埠 25 獲取基本的外部電子郵件流量並進入postfix的隊列。我相信是防火牆阻止了我,因為:
- 我所有的 DNS 記錄都設置正確。這些多年來沒有改變;我所要做的就是更新 IP 地址以適應這個新主機。
netstat -ln
確認埠正在監聽;我可以telnet localhost 25
甚至談判EHLO
等等就好了- 我的後綴配置可能是正確的,但也無關緊要。我沒有測試別名或虛擬域之類的功能:我只是發送到real-local-user@postfix-$mydestination-entry。當我從 localhost 發送消息時,它會很好地傳遞。
- 我提高了 postfix qmgr守護程序的詳細程度,無論我從機器外部發送多少郵件,它的日誌都不會顯示任何郵件正在進入隊列。它報告的只是每 5 分鐘醒來做一些正常動作。
拿到機器時, firewalld的相關區域是這樣的:
public target: default icmp-block-inversion: no interfaces: sources: services: http ssh https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
我現在設法使它看起來像這樣(所有隱藏線保持不變):
public target: default services: http ssh https smtp ports: 25/tcp
(我進行了更改
--permanent
並--reload
在每個更改後進行了編輯。)不幸的是,我仍然無法
telnet host 25
從遠端位置發送郵件,遠端郵件仍然無法到達我的postfix隊列。關於我缺少什麼的任何想法?PS 請注意,http位於同一個firewalld區域中,並且從第一天起我就可以
telnet host 80
通過 Web 瀏覽器進行連接。PPS 我避免在這裡發布任何關於iptables輸出的內容,因為我實際上不知道其中哪些部分是相關的。我希望有人能夠在沒有這些資訊的情況下推斷出我的問題,但如果沒有,那麼我當然可以探勘它……
由於這是一個 VPS,他們中的許多人將 Postfix 預先配置為僅偵聽 127.0.0.1:25 而不是 0.0.0.0:25,這將阻止外部訪問 SMTP 埠 - 檢查 main.cf 中的 inet_interfaces 是合乎邏輯的第一步。
您說您使用 netstat 來確保程序正在偵聽,也許仔細檢查它實際上綁定到所有介面會揭示,而不僅僅是 127.0.0.1:25。