我一直在尝试设置一个新的邮件服务器,以便从我的 VPS 迁移,因为我的主机已决定关闭。旧服务器运行的是 Exim/Courier(此时已有近十年历史),我认为 Postfix/Dovecot 的设置会更简单。不过,我的运气不太好。
我想要设置的内容:
- 后缀
- 多夫科特
- Maildir 格式
- 多个域
- 多个帐户
- ClamAV
- 垃圾邮件杀手
我一直在使用 Amavis 将 ClamAV 和 SpamAssassin 结合在一起。
postconf-n:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
content_filter = smtp-amavis:[127.0.0.1]:10024
home_mailbox = Maildir/
inet_interfaces = all
mailbox_command = /usr/lib/dovecot/deliver
mailbox_size_limit = 0
milter_default_action = accept
mydestination = localhost, /etc/postfix/domains
myhostname = example.org
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_client_restrictions = reject_unknown_client_hostname, permit_sasl_authenticated
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_helo_required = yes
smtpd_helo_restrictions = reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname
smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/postfix/.pem
smtpd_tls_key_file = /etc/postfix/.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_alias_maps = hash:/etc/postfix/virtual
在/etc/postfix/域中:
lorem.com
example.org
website.net
在/etc/postfix/虚拟:
[email protected] userTwo
[email protected] userTwo
[email protected] userOne
[email protected] userOne
[email protected] userOne
[email protected] userOne
[email protected] userThree
[email protected] userTwo
邮件日志,邮件错误:
Aug 3 20:04:55 example postfix/submission/smtpd[25424]: connect from my-hostname[68.xxx.xxx.xxx]
Aug 3 20:04:55 example postfix/submission/smtpd[25424]: 8D70441402: client=my-hostname[68.xxx.xxx.xxx], sasl_method=PLAIN, sasl_username=userOne
Aug 3 20:04:55 example postfix/cleanup[25429]: 8D70441402: message-id=<[email protected]>
Aug 3 20:04:55 example postfix/qmgr[25311]: 8D70441402: from=<[email protected]>, size=583, nrcpt=1 (queue active)
Aug 3 20:04:55 example postfix/submission/smtpd[25424]: disconnect from my-hostname[68.xxx.xxx.xxx]
Aug 3 20:04:56 example postfix/smtpd[25434]: connect from localhost[127.0.0.1]
Aug 3 20:04:56 example postfix/smtpd[25434]: 72CE941403: client=localhost[127.0.0.1]
Aug 3 20:04:56 example postfix/cleanup[25429]: 72CE941403: message-id=<[email protected]>
Aug 3 20:04:56 example postfix/qmgr[25311]: 72CE941403: from=<[email protected]>, size=991, nrcpt=1 (queue active)
Aug 3 20:04:56 example postfix/smtpd[25434]: disconnect from localhost[127.0.0.1]
Aug 3 20:04:56 example amavis[5148]: (05148-07) Passed CLEAN {RelayedInbound}, [68.xxx.xxx.xxx]:52874 [68.xxx.xxx.xxx] <[email protected]> -> <[email protected]>, Queue-ID: 8D70441402, Message-ID: <[email protected]>, mail_id: QciSwqBl84A4, Hits: 1.439, size: 583, queued_as: 72CE941403, 838 ms
Aug 3 20:04:56 example postfix/smtp[25430]: 8D70441402: to=<[email protected]>, orig_to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:10024, delay=1, delays=0.13/0.01/0.01/0.84, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 72CE941403)
Aug 3 20:04:56 example postfix/qmgr[25311]: 8D70441402: removed
Aug 3 20:04:56 example dovecot: lda(steve): msgid=<[email protected]>: saved mail to INBOX
Aug 3 20:04:56 example postfix/local[25377]: 72CE941403: to=<[email protected]>, relay=local, delay=0.12, delays=0.01/0/0/0.1, dsn=2.0.0, status=sent (delivered to command: /usr/lib/dovecot/deliver)
Aug 3 20:04:56 example postfix/qmgr[25311]: 72CE941403: removed
我审查了我的 IP 和主机名。现在,请注意中间的那行,上面写着 orig_to。当我收到电子邮件时,它位于[电子邮件保护]的已发送框。这很奇怪,不是吗?SMTP 来自[电子邮件保护]到[电子邮件保护]工作正常。
我发现了另一个与此相符的问题:
Postfix:virtual_alias_maps 尽管有新域名,但仍将所有内容传递给一个用户
不幸的是,我不明白答案,并且我不相信我们的设置是相同的。
所以我认为这与我的目的地以及我使用的虚拟地图有关......但如果我迄今为止所做的不起作用,我不太确定如何设置我的目的地和虚拟域。
我已经搜索这个看似简单的问题的答案很长时间了,而且我已经没有其他解决方案可以尝试了。我不想让 Google 运行我的邮件,我真的很想让它在这个 VPS 上运行。
任何帮助都将不胜感激。谢谢。
答案1
我相信我已经解决了这个问题,并希望这能为遇到此问题的其他人提供帮助。有点失望,这里没有太多帮助,但我想写出来可能会有所帮助。无论如何:
在 中main.cf
,myorigin
和mydestination
变量需要设置为 localhost。因此:
myorigin = localhost
mydestination = localhost
不再使用 mydestination 来处理域分配,而是切换到虚拟域映射,这样虚拟用户就可以获取所需的邮件。
virtual_alias_domains = hash:/etc/postfix/domains
这意味着我们还需要正确格式化文件/etc/postfix/domains
:
example.org #
example.com #
注释只是满足哈希格式,仅此而已。postmap
此文件也需要:
postmap /etc/postfix/domains
就是这样。在完成虚拟域查找后,所有个人帐户都将把电子邮件路由到正确的 unix 地址。
我仍然不知道对于用户来说“扩展”是什么,或者遇到麻烦的其他人发布了什么,但这似乎与这个特定问题无关。
我希望这对像我这样的人有所帮助。
编辑:还删除中的所有内容/etc/aliases
。