Linux

後綴轉發openrelay這p和nr和l一種是open relay

  • June 5, 2019

大家好。今天,我在我的 CentOS 7 vps 上設置了 postfix。

我想要的是

我希望我的伺服器/後綴按照以下規則行事:

  1. 地球上的每個人都應該能夠郵寄foo@server.com
  2. Postfix 必須將此郵件轉發到bar@externalmail.com
  3. 沒有其他東西可以發送到任何域

為簡單起見,我稱我的域為server.com.

是)我有的

現在,我可以向 發送郵件foo@server.com,這些郵件會被轉發到bar@externalmail.com(通過 telnet 測試,像這樣)。所有 DNS 記錄設置正確,SSL 證書執行良好。

我的問題

我注意到我可以通過 telnet 連接將郵件發送到我想要的任何域。

可悲的是,垃圾郵件機器人也注意到了這一點,因為根據我的/var/log/maillog. 我通過線上黑名單檢查器檢查了一些 IP 地址,所有這些都被列入黑名單。

我在 Linux 系統方面經驗豐富(足夠),但對根據我的意願設置後綴伺服器非常陌生。現在,我只是在 ufw 中阻塞了埠 25 來阻止機器人,直到問題解決。

問題

如何設置後綴以僅將具有特定收件人(foo@server.com)的郵件轉發到特定的轉發地址(bar@externalmail.com)?

其次,如何阻止在垃圾郵件和 CBL 列表中被阻止的 IP 地址?

配置

這是我的 /etc/postfix/main.cf (適應問題,不包括評論):

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
    PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
    ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.10.1/samples
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
###################################
# My stuff
###################################
# Host and site name.
myhostname = server.com
mydomain = server.com
myorigin = server.com
# Virtual aliases.
virtual_alias_domains = server.com
virtual_alias_maps = hash:/etc/postfix/virtual
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/server.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/server.com/privkey.pem
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes
smtp_tls_cert_file = /etc/letsencrypt/live/server.com/fullchain.pem
smtp_tls_key_file = /etc/letsencrypt/live/server.com/privkey.pem

這是我的 /etc/postfix/master.cf:

smtp      inet  n       -       n       -       -       smtpd
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

我認為可能重要的最後一個文件是 /etc/postfix/virtual:

foo@server.com bar@externalmail.com

最後一句話

我擁有的配置都是從我在網際網路上可以找到的任何東西組裝而成的,我認為這對實現我想要 postfix 做的事情很有用。我是這個 postfix-setup-world 的新手,必須說這是一個難以破解的難題。如果您在我的配置中發現任何錯誤,請發表評論!

編輯

今天,我為 Postfix 配置了一些限制。這些限制似乎解決了我的問題並強制執行我想要的行為。以下是新的相關部分/etc/postfix/main.cf

###################################
smtpd_client_restrictions =
   reject_invalid_hostname,
   reject_rbl_client zen.spamhaus.org,
   reject_unknown_client

###################################
smtpd_helo_restrictions =
   reject_unauth_pipelining,
   reject_non_fqdn_hostname,
   reject_invalid_hostname,
   reject_unknown_hostname

###################################
smtpd_sender_restrictions =
   reject_non_fqdn_sender,
   reject_unknown_sender_domain,
   reject_unknown_address,
   reject_unknown_reverse_client_hostname,
   reject_unknown_client_hostname

###################################
smtpd_recipient_restrictions =  
   reject_non_fqdn_recipient,
   reject_unknown_recipient_domain,
   reject_unauth_destination

在找到有關阻塞的更多資訊後,我創建了一個新配置。這是為了阻止所有unknown[ipv4]連接發送郵件。

此外,它還會阻止嘗試在我的域之外發送郵件,server.com.

我使用mxtoolbox開放中繼工具進行了測試,看看它是否有效,並且確實有效。

對於繼電器控制,使用smtpd_relay_restrictions,例如:

smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

用於smtpd_recipient_restrictions垃圾郵件控制,例如:

smtpd_recipient_restrictions = reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, reject_non_fqdn_recipient, reject_rbl_client zen.spamhaus.org

必讀:

http://www.postfix.org/SMTPD_ACCESS_README.html

http://www.postfix.org/postconf.5.html

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