Linux

Postfix 不發送郵件

  • August 6, 2021

我正在嘗試了解郵件伺服器,並且對設置中的所有移動部分感到非常害怕..

目前我無法從我的 smtp 伺服器發送。我可以很好地接收來自各個域的郵件。

在我的日誌中,我在嘗試發送郵件時看到以下條目。

  • 郵件日誌
Jul 31 11:59:15 mail postfix/submission/smtpd[1290]: connect from unknown[78.136.22.232]
Jul 31 12:01:03 mail postfix/postscreen[1294]: CONNECT from [209.85.214.179]:46881 to [45.77.139.149]:25
Jul 31 12:01:03 mail postfix/postscreen[1294]: PASS OLD [209.85.214.179]:46881
Jul 31 12:01:03 mail postfix/smtpd[1297]: connect from mail-pl1-f179.google.com[209.85.214.179]
Jul 31 12:01:05 mail postfix/smtpd[1297]: 03178A46: client=mail-pl1-f179.google.com[209.85.214.179]
Jul 31 12:01:05 mail postfix/cleanup[1299]: 03178A46: message-id=<CAMJ_LmbWv_5o7GZJx8RwqOqz52O_sWTrgX0_=mSi_Vt6+uz++Q@mail.gmail.com>
Jul 31 12:01:05 mail postfix/cleanup[1299]: 03178A46: milter-reject: END-OF-MESSAGE from mail-pl1-f179.google.com[209.85.214.179]: 5.7.1 Gtube pattern; from=<kareltsvetkov@gmail.com> to=<hostmaster@mydomain.abc> proto=ESMTP helo=<mail-pl1-f179.google.com>
Jul 31 12:01:05 mail postfix/smtpd[1297]: disconnect from mail-pl1-f179.google.com[209.85.214.179] ehlo=2 starttls=1 mail=1 rcpt=1 data=0/1 quit=1 commands=6/7
Jul 31 12:04:15 mail postfix/submission/smtpd[1290]: timeout after CONNECT from unknown[78.136.22.232]
Jul 31 12:04:15 mail postfix/submission/smtpd[1290]: disconnect from unknown[78.136.22.232] commands=0/0
root@mail:~#

我的作業系統是 Debian 9,所有 iptables 規則在測試時都已刷新。這是我的 master.cf 和 main.cf –> https://pastebin.com/9WUnzYZt

謝謝

EDIT1: 我忘了提及的事情。我從我的 main.cf 中執行了 grep ‘smtp.*restrict’。我注意到 smtpd_recipient_restrictions 指向一個 sql 文件。sql文件本身有以下查詢..這可能是外發郵件失敗的原因嗎?

root@mail:~# grep smtp.*restrict /etc/postfix/main.cf
smtpd_relay_restrictions =      reject_non_fqdn_recipient
smtpd_recipient_restrictions = check_recipient_access mysql:/etc/postfix/sql/recipient-access.cf
smtpd_client_restrictions =     permit_mynetworks
smtpd_helo_restrictions =   permit_mynetworks
smtpd_data_restrictions = reject_unauth_pipelining
root@mail:~# grep query /etc/postfix/sql/recipient-access.cf
query = select if(sendonly = true, 'REJECT', 'OK') AS access from accounts where username = '%u' and domain = '%d' and enabled = true LIMIT 1;
root@mail:~#

**EDIT2:**我配置 mutt 以排除這是客戶端問題,但我似乎仍然無法讓它工作..

└─[$] <> cat muttrc
set folder = "imaps://hostmaster@mydomain.abc@imap.mydomain.abc:993"
set smtp_url =  "smtp://hostmaster@mydomain.abc@smtp.mydomain.abc:587"

set from = "hostmaster@mydomain.abc"
set realname = "hostmaster"

set spoolfile = "+Inbox"
set record = "+Sent"
set trash = "+Trash"
set postponed = "+Drafts"

mailboxes =Inbox =Sent =Trash =Drafts =Junk =Other

但是,每當我嘗試發送郵件時,無論它是另一個域還是與發件人相同的電子郵件地址,我都會看到此錯誤

SMTP session failed: 451 4.3.0 <hostmaster@mydomain.abc>: Temporary lookup failure 

第一個問題:我的 sender-login-maps.cf 文件中有錯字。指定 dbuser 時說的是“ser”而不是“user”。

第二個問題:在我能夠發送郵件之後,我啟動了防火牆但是停止接收郵件。這是由於到 tcp 25 的傳入連接被阻止。我不允許這樣做,因為我認為如果我已將 smtpd 配置為使用 587,它不應該需要打開埠 25,但是對於傳入連接而言並非如此。

郵件設置現在按預期工作。

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