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