mysql - Postfix : Virtual domain,邮箱,别名:本地生成邮件的未知用户(使用sendmail)

标签 mysql postfix-mta

我有一台带有 Postfix 2.9.6 的服务器以及带有 MySQL 的虚拟用户、域和别名。当我从另一个邮件服务器或使用系统的 MUA(Squirrel 或 Thunderbird)向别名发送邮件时,邮件会正确传送到别名的 GOTO。但是,当邮件从服务器发送时(例如,使用fail2ban的邮件操作,或只是sendmail),服务器会响应“未送达的邮件返回发件人”和未知用户作为描述。

我做错了什么?哪里可以继续调试? (我做了很多测试和搜索,但没有任何线索)。

我认为不需要 MySQL 的配置文件,因为当邮件源自服务器外部,甚至来自使用任何 MUA 的现有本地用户时,它们可以正常工作。不管怎样,它们都是虚拟用户的标准,并且与 MySQL 的连接肯定可以正常工作。

postconf -n:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
default_destination_concurrency_limit = 20
default_destination_recipient_limit = 600
defer_transports = hold
disable_vrfy_command = no
header_size_limit = 102400
hopcount_limit = 50
html_directory = /usr/share/doc/postfix/html
inet_interfaces = all
inet_protocols = all
initial_destination_concurrency = 35
local_destination_concurrency_limit = 20
mailbox_size_limit = 0
maximal_queue_lifetime = 2d
message_size_limit = 36909875
mydestination = MY-HOSTNAME.example.com, old-name.example.com, localhost.localdomain, localhost
myhostname = MY-HOSTNAME.example.com
mynetworks = 127.0.0.0/8
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
readme_directory = /usr/share/doc/postfix
recipient_bcc_maps = regexp:/etc/postfix/recipient_bcc
recipient_delimiter = +
relayhost =
sender_bcc_maps = regexp:/etc/postfix/sender_bcc
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP
smtpd_client_restrictions = permit_sasl_authenticated check_client_access hash:/etc/postfix/access_client reject_rbl_client sbl-xbl.spamhaus.org reject_rbl_client bl.spamcop.net reject_rbl_client cbl.abuseat.org
smtpd_data_restrictions = permit_mynetworks permit_sasl_authenticated check_client_access regexp:/etc/postfix/add_auth_header.regexp reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated check_recipient_access hash:/etc/postfix/access_recipient check_recipient_access regexp:/etc/postfix/filter-filtra.regexp reject_non_fqdn_recipient reject_unknown_recipient_domain reject_unauth_destination reject_unverified_recipient check_policy_service inet:127.0.0.1:60000
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated check_client_access hash:/etc/postfix/access_client check_sender_access hash:/etc/postfix/access_sender reject_rbl_client bl.spamcop.net reject_rbl_client sbl-xbl.spamhaus.org reject_non_fqdn_sender reject_rbl_client bb.barracudacentral.org reject_unknown_sender_domain
smtpd_tls_cert_file = /etc/ssl/private/multidomain.pem
smtpd_tls_key_file = /etc/ssl/private/multidomain.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
tcp_windowsize = 14000
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 550
unknown_relay_recipient_reject_code = 550
unknown_virtual_alias_reject_code = 550
unknown_virtual_mailbox_reject_code = 550
unverified_recipient_reject_code = 550
unverified_sender_reject_code = 450
vacation_destination_recipient_limit = 1
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf regexp:/etc/postfix/aliases-regexp
virtual_gid_maps = static:89
virtual_mailbox_base = /home/vpopmail/domains
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 1024000000
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_maildir_extended = yes
virtual_maildir_limit_message = Sorry, the user's maildir has no space available in their inbox.
virtual_minimum_uid = 89
virtual_overquota_bounce = yes
virtual_transport = virtual
virtual_uid_maps = static:89

/etc/postfix/transport:

autoreply.example.com        vacation:

/etc/postfix/aliases-regexp:

/user[0-9]{4}@example\.com/ user@example.com

/etc/postfix/filter-filtra.regexp:

/user1@example.com/ FILTER smtp-amavis:[127.0.0.1]:10026
/^/ FILTER smtp-amavis:[127.0.0.1]:10024

最佳答案

我自己找到了问题(以及解决方案!):)

master.cf中,pickup服务有一个额外的配置选项,它将cleanup重定向到pre-cleanup,禁用了虚拟别名(类似于 https://amavis.org/README.postfix.html#d0e1038 )。只需注释 pre-cleanup 选项(让拾取器使用正常的 cleanup 服务)即可纠正问题。

更改之前(错误):

pickup  fifo    n       -       -       60      1       pickup
   -o cleanup_service_name=pre-cleanup

更改后(正确):

pickup  fifo    n       -       -       60      1       pickup
#   -o cleanup_service_name=pre-cleanup

关于mysql - Postfix : Virtual domain,邮箱,别名:本地生成邮件的未知用户(使用sendmail),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40978296/

相关文章:

linux - 如何获取或捕获由 postfix 发送的电子邮件正文和标题

php - 使用php在mysql的某一列中搜索关键字

php - 通过php为存储在mysql中的postfix电子邮件用户设置密码

postfix-mta - postfix 转发邮件被退回给原始发件人

php - 我如何配置 postfix 以从 azure 云发送电子邮件?

linux - Postfix 后队列内容过滤器不起作用

php - 使用 MySQL 查询显示品牌

mysql - 同时更改sql数据库中列的多个功能

php - 完成数据库查询时出现 SQL 语法错误

mysql - 如何将变量放入 mysql 查询中?