Ubuntu

如何將 Postfix 配置為在登錄時接受帶有“@”(at 符號)的本地使用者的 SMTP?

  • December 12, 2014
  • 我有一個 Ubuntu 14.04 伺服器,mydomain.com其中有一群@domain登錄的使用者,比如us.er@mydomain.com.
  • 他們每個人都有一個us.er-mydomain.com具有相同 uidpasswdshadow條目的“偽”帳戶。
  • /etc/postfix/virtual他們每個人在:中都有一個條目us.er@mydomain.com us.er-mydomain.com

(這些使用者是從 CentOS 上的 Virtualmin 遷移而來的)

我的伺服器拒絕郵件並出現錯誤:

Dec  6 10:27:31 mydomain postfix/smtpd[8176]: NOQUEUE: reject: RCPT from lalala.asdfasdf.com[220.232.206.13]: 554 5.7.1 <us.er@mydomain.com>:
Relay access denied; from=<asdfasdf@asdfasdf.com> to=<us.er@mydomain.com> proto=ESMTP helo=<lalala@asdfasdf.com>

儘管它確實有一個 us.er@mydomain.com 帳戶。

我沒有也沒有myhostname設置mydomain。如果我將它們設置為我的伺服器域,postmap 會開始拒絕帶有unknown user: "us.er"消息的郵件。

修復 SMTP 接收的最佳方法是什麼?這個設置有什麼問題嗎?

Imap 和 pop3 或多或少地工作。配置轉儲如下。

主機名

some-isp-vps

主機名 -f

mydomain.com 

postconf -n

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
allow_percent_hack = no
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/lib/postfix
data_directory = /var/lib/postfix
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
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailbox_size_limit = 0
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
message_size_limit = 30485760
milter_default_action = accept
milter_protocol = 2
mydestination = $myhostname, localhost.$mydomain, localhost, vp1.mydomain.com
mynetworks = 192.241.228.147,127.0.0.1
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sender_bcc_maps = hash:/etc/postfix/bcc
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = may
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,permit_auth_destination,reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks,permit_sasl_authenticated,permit_auth_destination,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = no
smtpd_tls_cert_file = /etc/ssl/certs/ssl.cert
smtpd_tls_key_file = /etc/ssl/certs/ssl.key
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_ciphers = high
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
tls_random_source = dev:/dev/urandom
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual

postconf -M

smtp       inet  n       -       n       -       -       smtpd -o smtpd_sasl_auth_enable=yes
smtps      inet  n       -       n       -       -       smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
pickup     fifo  n       -       n       60      1       pickup
cleanup    unix  n       -       n       -       0       cleanup
qmgr       fifo  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 -o smtp_fallback_relay=
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
submission inet  n       -       n       -       -       smtpd -o smtpd_sasl_auth_enable=yes

Postfix 拒絕中繼到 mydomain.com,因為它沒有被列為本地或虛擬域。第一步是定義域類(postfix.org/ADDRESS_CLASS_README.html)。myhostname 是機器名。mydestination 是一個包含託管域和在 passwd 上列出的使用者的列表。

您的 postfix smtpd 程序抱怨:

<us.er@mydomain.com>: Relay access denied

因為:

  1. mydomain.com未配置/辨識為本地最終目的地;

  1. postfix 未配置為將消息中繼到外部mydomain.com域;

因此,由於無法同時提供本地(如第 1 點)和遠端(如第 2 點),它會給出您面臨的“中繼訪問被拒絕”錯誤。

根據您的配置,您的問題是第 1 點:您希望您的 postfix 成為mydomain.com域的最終目的地,但 postfix… 仍然不知道這一點。你有兩種方法可以解決這個問題:

  • A) mydestination指令:“…通過 $local_transport 郵件傳遞傳輸傳遞的域列表…”。不幸的是,您的配置將其設置為:

我的目的地 = $ myhostname, localhost. $ mydomain,本地主機,vp1.mydomain.com

不包括*$mydomain*單獨;

  • B) virtual_mailbox_domains指令:“…Postfix 是指定域列表的最終目的地;郵件通過 $virtual_transport 郵件傳遞傳輸傳遞….”。(順便說一句:您的配置包含肯定與虛擬域託管相關的 virtual_alias_maps 指令,但可能您最初沒有正確配置引用的 /etc/postfix/virtual 文件)

一個非常重要的注意事項:您必須仔細選擇是否將您的託管域包含在“ mydestination ”或“ virtual_mailbox_domain ”中,因為它可能會產生嚴重的安全隱患,就您可能被迫在電腦上本地創建的 unix 帳戶而言。在您的留言中,您寫道:

“……他們每個人都有一個“偽”帳戶 us.er-mydomain.com 具有相同的 uid、passwd 和影子條目……”

所以你清楚地引用了/etc/passwd 和/etc/shadow。因此,它們是真實帳戶!

一般來說,如果您選擇“mydestination”路線,您通常會被迫將真實帳戶關聯到您託管的每個郵箱。如果您只託管自己的單個域,這可能不是一個嚴重的問題。

相反,當您託管多個域時,它很快就會變成一場噩夢。在這種情況下,您可能只為您的使用者提供電子郵件服務,並且……為他們每個人設置一個真正的 unix 帳戶肯定是太多了。

這就是從 Postfix 2.0開始添加virtual_mailbox_domains的原因。

最後:您已經解決了您的問題,將您的域添加到虛擬域列表中。還行吧。但是這個設置不需要定義真實的unix帳戶。

我建議您檢查一個非常清晰的範例: Postfix virtual MAILBOX example: separate domain, non-UNIX accounts

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