如何配置 Postfix 以接受登录时带有“@”(at 符号)的本地用户的 SMTP?

如何配置 Postfix 以接受登录时带有“@”(at 符号)的本地用户的 SMTP?
  • 我有一台 Ubuntu 14.04 服务器,上面mydomain.com有一堆用户@domain登录,比如[email protected]
  • us.er-mydomain.com他们每个人都有一个具有相同 uidpasswd和条目的“伪”帐户shadow
  • 它们每个都在/etc/postfix/virtual:中有一个条目[email protected] 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 <[email protected]>:
 Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[email protected]>

尽管它确实有一个[电子邮件保护]帐户。

我没有myhostnamemydomain设置。如果我将它们设置为我的服务器域,postmap 将开始拒绝带有unknown user: "us.er"消息的邮件。

修复 SMTP 接收的最佳方法是什么?此设置有什么问题吗?

Imap 和 pop3 或多或少可以工作。配置转储如下。

主机名

some-isp-vps

主机名 -f

mydomain.com 

后配置-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

后配置-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

答案1

Postfix 拒绝中继到 mydomain.com,因为它未列为本地或虚拟域。第一步是定义域类 (postfix.org/ADDRESS_CLASS_README.html)。myhostname 是机器名称。mydestination 是托管域和 passwd 上列出的用户的列表。

答案2

你的 postfix smtpd 进程抱怨:

<[email protected]>: Relay access denied

因为:

  1. 我的域名未配置或未被识别为本地最终目的地;

  1. postfix 没有配置为将消息中继到外部我的域名领域;

因此,由于无法同时进行本地传送(对于第 1 点)和远程传送(对于第 2 点),所以会出现您所面临的“中继访问被拒绝”错误。

根据您的配置,您的问题是第 1 点:您希望您的 postfix 成为我的域名域名,但 postfix... 仍然不知道这一点。你有两种方法可以解决这个问题:

  • A)我的目的地指示:“...通过 $local_transport 邮件传递传输传递的域名列表...”。不幸的是,您的配置将其设置为:

    mydestination = $myhostname, localhost.$mydomain, localhost, vp1.mydomain.com

不包括$我的域名独自的;

  • B)虚拟邮箱域名指示:“...Postfix 是指定域列表的最终目的地;邮件通过 $virtual_transport 邮件传递传输进行传递....”。(顺便说一句:您的配置包含一个 virtual_alias_maps 指令,该指令肯定与虚拟域托管有关,但您可能最初没有正确配置引用的 /etc/postfix/virtual 文件)

非常重要的一点是:您必须仔细选择是否将您的托管域名包含在“我的目的地“ 或者 ”虚拟邮箱域名“因为它可能会带来严重的安全隐患,就 unix 帐户而言,您可能被迫在您的机器上本地创建。在您的消息中,您写道:

“...他们每个人都有一个具有相同 uid、passwd 和 shadow 条目的“伪”帐户 us.er-mydomain.com...”

因此您明确引用了 /etc/passwd 和 /etc/shadow。因此它们是真实的帳戶!

一般情况下,如果您选择“mydestination”路线,则您几乎必须将真实帐户与您托管的每个邮箱相关联。如果您只托管自己的单个域,那么这可能不是一个严重的问题。

相反,当您托管多个域时,它很快就会变成一场噩梦。在这种情况下,您可能只为用户提供电子邮件服务,并且……为每个用户设置一个真正的 unix 帐户肯定是太多了。

这就是为什么自 Postfix 2.0 以来虚拟邮箱域名已添加。

最后:您已经解决了问题,将您的域添加到虚拟域列表中。这样就没问题了。但是此设置不需要定义 real-unix-accounts。

我建议您查看一个非常清晰的例子: Postfix 虚拟 MAILBOX 示例:独立域、非 UNIX 帐户

相关内容