![postfix,courier 在本地工作,不接收外部消息](https://linux22.com/image/625242/postfix%EF%BC%8Ccourier%20%E5%9C%A8%E6%9C%AC%E5%9C%B0%E5%B7%A5%E4%BD%9C%EF%BC%8C%E4%B8%8D%E6%8E%A5%E6%94%B6%E5%A4%96%E9%83%A8%E6%B6%88%E6%81%AF.png)
我刚刚在 ubuntu 12.04 机器上全新安装了 Postfix 和 courier
邮件服务器似乎从内部运行,直到您尝试从外部地址(如 gmail)发送电子邮件。
同一台服务器上的apache、mysql等内部和外部均正常运行。
反向查找正确返回。
netstat -nl 返回
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:783 0.0.0.0:* LISTEN
tcp 0 0 173.255.238.79:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:2905 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:4190 0.0.0.0:* LISTEN
tcp6 0 0 :::993 :::* LISTEN
tcp6 0 0 :::995 :::* LISTEN
tcp6 0 0 :::110 :::* LISTEN
tcp6 0 0 :::143 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::53 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:5432 :::* LISTEN
tcp6 0 0 :::25 :::* LISTEN
tcp6 0 0 ::1:953 :::* LISTEN
tcp6 0 0 :::4190 :::* LISTEN
etc/postfix/main.cf 是
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = /usr/share/doc/postfix
# TLS parameters
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = fasttrackdispatch.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = fasttrackdispatch.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
html_directory = /usr/share/doc/postfix/html
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "The user you are trying to reach is over quota."
virtual_overquota_bounce = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
查看 mail.log 时没有显示任何内容表明该消息已收到或被拒绝 - 几乎就像该消息从未被发送过一样
发送者不会收到任何表明请求被拒绝或发生任何类型的错误的回复消息。
我尝试在 ubuntu 防火墙上打开端口 25,然后关闭防火墙,看看是否可行,但无济于事。
任何帮助都值得赞赏-谢谢
我真的不知道发生了什么事——任何帮助都将不胜感激。
现在 inet_interface = all 当我向该地址发送邮件时都会收到回复邮件
这是主机 fasttrackdispatch.com 的邮件系统。
很遗憾地通知您,您的邮件无法发送给一个或多个收件人。附件如下。
如需更多帮助,请发送邮件到邮政。
如果您这样做,请附上此问题报告。您可以从附件的返回消息中删除您自己的文本。
The mail system
<[email protected]>: unknown user: "james.stafford"
Final-Recipient: rfc822; [email protected]
Original-Recipient: rfc822;[email protected]
Action: failed
Status: 5.1.1
Diagnostic-Code: X-Postfix; unknown user: "james.stafford"
我不明白为什么它说这是一个未知用户,但事实上它是一个内部设置的账户
新邮件日志
Jan 22 14:31:47 localhost postfix/smtpd[14264]: connect from mail-wi0-f178.google.com[209.85.212.178]
Jan 22 14:31:47 localhost postfix/trivial-rewrite[14267]: warning: do not list domain fasttrackdispatch.com in BOTH mydestination and virtual_mailbox_domains
Jan 22 14:31:47 localhost postfix/smtpd[14264]: BF9C4B64C: client=mail-wi0-f178.google.com[209.85.212.178]
Jan 22 14:31:47 localhost postfix/cleanup[14270]: BF9C4B64C: message-id=<CAE0rcYX=LwLJOUVnaaCvv33xnMxBXXonUt-8ncV06e9v+SST6w@mail.gmail.com>
Jan 22 14:31:47 localhost postfix/qmgr[13856]: BF9C4B64C: from=<[email protected]>, size=1806, nrcpt=1 (queue active)
Jan 22 14:31:48 localhost postfix/smtpd[14264]: disconnect from mail-wi0-f178.google.com[209.85.212.178]
Jan 22 14:31:53 localhost postfix/smtpd[14276]: connect from localhost[127.0.0.1]
Jan 22 14:31:53 localhost postfix/trivial-rewrite[14267]: warning: do not list domain fasttrackdispatch.com in BOTH mydestination and virtual_mailbox_domains
Jan 22 14:31:53 localhost postfix/smtpd[14276]: B128DB64D: client=localhost[127.0.0.1]
Jan 22 14:31:53 localhost postfix/cleanup[14270]: B128DB64D: message-id=<CAE0rcYX=LwLJOUVnaaCvv33xnMxBXXonUt-8ncV06e9v+SST6w@mail.gmail.com>
Jan 22 14:31:53 localhost postfix/qmgr[13856]: B128DB64D: from=<[email protected]>, size=2378, nrcpt=1 (queue active)
Jan 22 14:31:53 localhost postfix/smtpd[14276]: disconnect from localhost[127.0.0.1]
Jan 22 14:31:53 localhost postfix/trivial-rewrite[14267]: warning: do not list domain fasttrackdispatch.com in BOTH mydestination and virtual_mailbox_domains
Jan 22 14:31:53 localhost amavis[11815]: (11815-04) Passed CLEAN, [209.85.212.178] [209.85.212.178] <[email protected]> -> <[email protected]>, Message-ID: <CAE0rcYX=LwLJOUVnaaCvv33xnMxBXXonUt-8ncV06e9v+SST6w@mail.gmail.com>, mail_id: gdtQkyTU2m1h, Hits: -0.799, size: 1806, queued_as: B128DB64D, [email protected], 5753 ms
Jan 22 14:31:53 localhost postfix/smtp[14271]: BF9C4B64C: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:10024, delay=6.1, delays=0.34/0.01/0/5.8, dsn=2.0.0, status=sent (250 2.0.0 from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as B128DB64D)
Jan 22 14:31:53 localhost postfix/qmgr[13856]: BF9C4B64C: removed
Jan 22 14:31:53 localhost postfix/local[14278]: B128DB64D: to=<[email protected]>, relay=local, delay=0.04, delays=0.01/0.02/0/0.01, dsn=5.1.1, status=bounced (unknown user: "james.stafford")
Jan 22 14:31:53 localhost postfix/cleanup[14270]: BA7FAB64E: message-id=<[email protected]>
Jan 22 14:31:53 localhost postfix/qmgr[13856]: BA7FAB64E: from=<>, size=4322, nrcpt=1 (queue active)
Jan 22 14:31:53 localhost postfix/bounce[14279]: B128DB64D: sender non-delivery notification: BA7FAB64E
Jan 22 14:31:53 localhost postfix/qmgr[13856]: B128DB64D: removed
Jan 22 14:31:56 localhost postfix/smtp[14280]: BA7FAB64E: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[74.125.137.27]:25, delay=2.7, delays=0.01/0.01/0.58/2.1, dsn=2.0.0, status=sent (250 2.0.0 OK 1390401116 g10si11097167yhn.109 - gsmtp)
Jan 22 14:31:56 localhost postfix/qmgr[13856]: BA7FAB64E: removed
答案1
请检查用户表的映射是否正确工作。
因为我有一个类似的设置(带有 mysql 的虚拟用户/域),所以我在使用正确的语法/查询来处理用户请求时遇到了问题。
现在我要检查用户是否确实在服务器上有一个文件夹。
您使用 uid 5000,这可能意味着您使用了一些设置,其中创建所有虚拟用户的用户名都名为 vmail。如果是这种情况,您的设置(域/用户名)应该包含类似于以下内容:
/home/vmail/domain.tld/virtual_username
检查该文件夹是否存在且其中是否包含一些文件夹或文件。
如果不存在,则返回用户名的查询可能是错误的:
我的 /etc/postfix/mysql-virtual_mailboxes.cf) 看起来像这样:
user = DB_accessuser
password = XXXX
dbname = mail
table = users
select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
where_field = email
hosts = 127.0.0.1
另外:你所说的“设置一个内部运作的账户”是什么意思
您的邮件服务器似乎不知道该帐户,这让我相信它不在虚拟邮箱列表中,但我不知道您是否可以使用上述设置访问实际的“真实”用户。在我的服务器上,这不起作用”[电子邮件保护]“不起作用,其中”[电子邮件保护]“ 工作正常。
回复您添加的邮件日志:
解决办法如下(引自如何锻造):
错误:Postfix - 不要在 mydestination 和 virtual_mailbox_domains 中列出域 example.com
您在 /etc/postfix/main.cf 中的 virtual_mailbox_domains 指令引用的资源(例如 MySQL 数据库)中以及 mydestination 行(也在 /etc/postfix/main.cf 中)中都有 example.com!这不起作用。您可以在 virtual_mailbox_domains 或 mydestination 中列出 example.com,但不能同时在两者中列出。
更改后重新启动 Postfix
/etc/init.d/postfix restart
答案2
就像 NickW 所说的,看起来 inet_interfaces 就是问题所在。http://www.postfix.org/postconf.5.html#inet_interfaces
你有:
inet_interfaces = loopback-only
如果您只需要从本地应用程序发送/接收邮件,那么这样做没问题,应用程序在主服务器上执行。这就是为什么您在日志文件中看不到任何内容,postfix 从未收到连接。
但是如果你想“监听”外部连接,你需要一些类似的东西:
inet_interfaces = all
因此,您将在所有接口上监听端口 25,而不仅仅是 lo 接口。
答案3
为什么将 inet_interfaces 设置为仅环回?