我设置了 postfix + dovecot 并且知道我想要邮件列表,所以我决定安装 mailman。
一切正常,除了我无法向我的邮件列表发送电子邮件(这很重要,你不觉得吗?)。
当我向我的邮件列表发送邮件时([电子邮件保护]),我收到一条回复“未送达的邮件已退回给发件人”,内容如下:
This is the mail system at host too.gy.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
<[email protected]>: unknown user: "[email protected]"
看起来 Postfix 正在尝试验证我的邮件列表地址,但显然该地址未在 Postfix 用户数据库中注册。
但我在安装过程中遵循了说明,但我不知道为什么会发生这种情况。我浏览了所有讨论此问题的邮件列表,但仍然无法正常工作。所以我来了。
这是我的postconf -n
输出:
alias_database = $alias_maps
alias_maps = hash:/etc/postfix/aliases, hash:/var/lib/mailman/data/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/bin
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
html_directory = no
inet_protocols = ipv4
local_recipient_maps = $virtual_mailbox_maps $alias_maps
local_transport = virtual
mail_owner = postfix
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
mydestination = localhost, too.gy
mydomain = too.gy
myhostname = too.gy
mynetworks_style = host
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix
recipient_delimiter = +
relay_domains = *
sample_directory = /etc/postfix/sample
sendmail_path = /usr/bin/sendmail
setgid_group = postdrop
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_path = /var/run/dovecot/auth-client
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/private/server.crt
smtpd_tls_key_file = /etc/ssl/private/server.key
smtpd_tls_loglevel = 1
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 550
virtual_alias_maps = proxy:mysql:/etc/postfix/virtual_alias_maps.cf, hash:/var/lib/mailman/data/virtual-mailman
virtual_gid_maps = static:5000
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = proxy:mysql:/etc/postfix/virtual_domains_maps.cf
virtual_mailbox_limit = 512000000
virtual_mailbox_maps = proxy:mysql:/etc/postfix/virtual_mailbox_maps.cf
virtual_minimum_uid = 5000
virtual_transport = virtual
virtual_uid_maps = static:5000
和我的/etc/mailman/mm_cfg.py
:
# -*- python -*-
###############################################
# Here's where we get the distributed defaults.
from Defaults import *
##################################################
# Put YOUR site-specific settings below this line.
DEFAULT_URL_HOST = 'lists.too.gy'
DEFAULT_EMAIL_HOST = 'too.gy'
MTA = 'Postfix'
VIRTUAL_HOSTS.clear()
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['too.gy']
DEFAULT_URL_PATTERN = 'http://%s/'
PUBLIC_ARCHIVE_URL = 'http://%(hostname)s/archives/%(listname)s'
MAILMAN_SITE_LIST = 'mailman'
完整 POSTFIX 日志:
Mar 20 09:38:27 ks3100290 postfix/postfix-script[18843]: starting the Postfix mail system
Mar 20 09:38:28 ks3100290 postfix/master[18845]: daemon started -- version 2.11.0, configuration /etc/postfix
Mar 20 09:38:57 ks3100290 postfix/smtpd[18849]: connect from mail-pa0-f45.google.com[209.85.220.45]
Mar 20 09:38:57 ks3100290 postfix/trivial-rewrite[18853]: warning: do not list domain too.gy in BOTH mydestination and virtual_mailbox_domains
Mar 20 09:38:57 ks3100290 postfix/smtpd[18849]: 8829A2041F: client=mail-pa0-f45.google.com[209.85.220.45]
Mar 20 09:38:57 ks3100290 postfix/cleanup[18857]: 8829A2041F: message-id=<[email protected]>
Mar 20 09:38:57 ks3100290 postfix/qmgr[18847]: 8829A2041F: from=<[email protected]>, size=1768, nrcpt=1 (queue active)
Mar 20 09:38:57 ks3100290 postfix/trivial-rewrite[18853]: warning: do not list domain too.gy in BOTH mydestination and virtual_mailbox_domains
Mar 20 09:38:57 ks3100290 postfix/virtual[18858]: 8829A2041F: to=<[email protected]>, relay=virtual, delay=0.57, delays=0.48/0.02/0/0.06, dsn=5.1.1, status=bounced (unknown user: "[email protected]")
Mar 20 09:38:57 ks3100290 postfix/cleanup[18857]: E9EC6207B8: message-id=<[email protected]>
Mar 20 09:38:57 ks3100290 postfix/bounce[18861]: 8829A2041F: sender non-delivery notification: E9EC6207B8
Mar 20 09:38:57 ks3100290 postfix/qmgr[18847]: E9EC6207B8: from=<>, size=3443, nrcpt=1 (queue active)
Mar 20 09:38:57 ks3100290 postfix/qmgr[18847]: 8829A2041F: removed
Mar 20 09:38:58 ks3100290 postfix/smtpd[18849]: disconnect from mail-pa0-f45.google.com[209.85.220.45]
Mar 20 09:39:08 ks3100290 postfix/smtpd[18849]: warning: hostname user.mvnet.at does not resolve to address 85.255.155.158
Mar 20 09:39:08 ks3100290 postfix/smtpd[18849]: connect from unknown[85.255.155.158]
Mar 20 09:39:08 ks3100290 postfix/trivial-rewrite[18853]: warning: do not list domain tOo.gY in BOTH mydestination and virtual_mailbox_domains
Mar 20 09:39:08 ks3100290 postfix/smtpd[18849]: NOQUEUE: reject: RCPT from unknown[85.255.155.158]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in local recipient table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<user.mvnet.at>
Mar 20 09:39:08 ks3100290 postfix/smtpd[18849]: disconnect from unknown[85.255.155.158]
Mar 20 09:39:28 ks3100290 postfix/smtp[18862]: E9EC6207B8: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[173.194.67.27]:25, delay=31, delays=0.03/0.02/30/0.57, dsn=2.0.0, status=sent (250 2.0.0 OK 1395304718 ba4si773777wjc.22 - gsmtp)
Mar 20 09:39:28 ks3100290 postfix/qmgr[18847]: E9EC6207B8: removed
答案1
您已mailman
在 下正确添加了别名alias_maps = hash:/etc/postfix/aliases, hash:/var/lib/mailman/data/aliases
。但您已覆盖您的local_recipient_maps
。只需local_recipient_maps
在您的 中按如下方式修改您的main.cf
,因为本地收件人将在 中进行搜索local_recipient_maps
。
local_recipient_maps = $virtual_mailbox_maps $alias_maps
答案2
我按照ArchWiki 页面tgy 提到。我的解决方案是:
- 删除
local_transport = virtual
行 $mydomain
从......中去除mydestination
来自 Postfix' main.cf
,以及
- 设定
VIRTUAL_MAILMAN_LOCAL_DOMAIN = 'localhost'
在 Mailman 的mm_cfg.py
- 重新运行
/usr/lib/mailman/bin/genaliases
(现在生成表单list-*@localhost
)。
解释:将本地传输设置为virtual
,Postfix 被指示将所有与 Mailman 相关的邮件传递到虚拟邮箱(不存在该名称的邮箱)。
随着local_transport
回到其默认值,可以本地交付给 mailman 脚本(这localhost
是 的一部分mydestination
)。但是解析我的虚拟邮箱(数据库帐户)仍然有效,因为域是通过提供的virtual_mailbox_domains
(因此会出现重复警告)。