Iptables

如何在 Linux 上通過 firewalld 啟用 SMTP 接收?

  • June 16, 2018

我從一家託管公司租用了一個專用的、輕度管理的 CentOS7 機器。該主機安裝並執行了firewalld ,並預先設置了iptables首選項。

我沒想到會這樣;我習慣於接收沒有防火牆的盒子,除了我打開的那些之外,它們上面沒有執行任何服務。我對firewalldiptables知之甚少,並且正在努力通過埠 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。

引用自:https://serverfault.com/questions/916876