Postfix 将邮件发送到虚拟地址邮箱

Postfix 将邮件发送到虚拟地址邮箱

Postfix 版本 2.6.6,Dovecot 版本 2.0.9

我想设置 Postfix + Dovecot。Dovecot 似乎可以正常工作。我可以进行身份​​验证。但是,邮箱是空的!什么都投递不了!我按照许多关于 Postfix + Dovecot 的教程操作,但他们似乎想通过使用 Dovecot LDA 或 MySQL 来使事情复杂化。我只希望它非常简单,让 Postfix 投递到虚拟邮箱就可以了。我也不需要 MySQL。我已经设置了一个自定义密码文件,Dovecot 使用它进行身份验证,我可以使用 SSL 登录 POP3。

我从日志中看到 Postfix 正在向系统用户帐户(catch-all)发送邮件,而不是我在 Dovecot 中设置的虚拟用户。SMTP + SSL 身份验证似乎也有效。

我还可以从日志中看到 Dovecot 正在检查正确的虚拟邮件文件夹。

我只需要弄清楚如何让 Postfix 向虚拟邮箱发送邮件。我认为以下内容是相关的。请告诉我您需要查看哪些其他设置:

alias_maps = hash:/etc/aliases
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = xxx.com
myhostname = mail.xxx.com
mynetworks = 99.99.99.99, 99.99.99.99
myorigin = $mydomain
relay_domains = $mydestination, xxx.com, domain2.net, domain3.com
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_recipient_restrictions = reject_non_fqdn_sender reject_non_fqdn_recipient reject_unknown_recipient_domain permit_sasl_authenticated check_relay_domains
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = check_sender_mx_access cidr:/etc/postfix/bogus_mx reject_invalid_hostname reject_unknown_sender_domain reject_non_fqdn_sender
virtual_mailbox_base = /var/spool/vmail
virtual_mailbox_domains = xxx.com, domain2.net, domain3.com
virtual_minimum_uid = 444

Postfix master.cf:

submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

Dovecot 相关:

mail_location = maildir:~/Maildir
passdb {
  args = /etc/dovecot/users.conf
  driver = passwd-file
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
  }
}

虚拟邮件用户:

vmail:x:444:99:virtual mail users:/var/spool/vmail:/sbin/nologin

这是我尝试向自己发送某些内容时的 /var/log/maillog:

Oct 25 22:10:05 308321 postfix/smtpd[2200]: connect from user-999.cable.mindspring.com[99.99.99.99]
Oct 25 22:10:05 308321 postfix/smtpd[2200]: D224BD4753: client=user-999.cable.mindspring.com[99.99.99.99], sasl_method=LOGIN, [email protected]
Oct 25 22:10:06 308321 postfix/cleanup[2207]: D224BD4753: message-id=<7DC3C163CFFC483AB6226F8D3D9969D2@dumbopc>
Oct 25 22:10:06 308321 postfix/qmgr[2168]: D224BD4753: from=<[email protected]>, size=1385, nrcpt=1 (queue active)
Oct 25 22:10:06 308321 postfix/smtpd[2200]: disconnect from user-999.cable.mindspring.com[99.99.99.99]
Oct 25 22:10:06 308321 postfix/local[2208]: D224BD4753: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=1.1, delays=0.53/0.02/0/0.51, dsn=2.0.0, status=sent (delivered to mailbox)
Oct 25 22:10:06 308321 postfix/qmgr[2168]: D224BD4753: removed

答案1

看起来您只定义了接收邮件的虚拟域。您还需要定义帐户。

使用 main.cf 中的指令 virtual_mailbox_maps 执行此操作

在这里阅读更多内容:http://www.postfix.org/postconf.5.html#virtual_mailbox_maps

相关内容