我只想将所有发送至 *@domain.com 和 *@*.domain.com 的电子邮件发送到一个唯一的电子邮件[电子邮件保护]
@runlevel6 有没有办法在虚拟环境中实现正则表达式
cat /etc/postfix/virtual
@example.com [email protected]
/[@*].example.com$/ [email protected]
我找到了:
在 main.cf 中
virtual_alias_maps = regexp:/var/spool/postfix/plesk/virtual-sub
在虚拟子系统中
/[@.]example\.tld$/ [email protected]
谢谢运行级别6
答案1
Postfix 支持通过 luser_relay 配置选项使用 catchall 帐户。
请参阅后缀页面luser_relay了解更多信息。
当 local(8) 投递代理发现邮件收件人不存在时,邮件通常会返回给发件人(“用户未知”)。有时需要将不存在的收件人的邮件转发到另一台机器。为此,您可以使用 luser_relay 配置参数指定备用目的地。
如果它不是服务器上所有域的通用名称,则可以使用虚拟别名。请参阅 postfix 页面虚拟别名了解更多信息。该页面的简短描述和代码摘录如下:
使用虚拟别名域,每个托管地址都会被别名为本地 UNIX 系统帐户或远程地址。以下示例显示了如何对 example.com 域使用此机制。
/etc/postfix/main.cf:
virtual_alias_domains = example.com ...other hosted domains...
virtual_alias_maps = hash:/etc/postfix/virtual
在/etc/postfix/虚拟:
[email protected] postmaster
[email protected] joe
[email protected] jane
# Uncomment entry below to implement a catch-all address
@example.com jim
...virtual aliases for more domains...
完成这些更改后,运行postmap /etc/postfix/virtual
并postfix reload
。
编辑:我认为你正在寻找的正则表达式是/[@.]example\.com$/ system
您可能需要在 main.cf 中进行其他更改才能支持此功能。请参阅这个帖子了解更多信息。
答案2
这是执行全部捕获的设置,但是针对外部服务器(我使用此服务器作为开发机器的智能主机)。
- 用您的服务器替换 mail.example.com(我们使用 exchange)
- 代替[电子邮件保护]所有发送至此信箱的电子邮件的目的地。
- 将 192.168.0.0 网络替换为您的开发网络
postconf -e recipient_canonical_classes=envelope_recipient
postconf -e recipient_canonical_maps=regexp:/etc/postfix/recipient_canonical_map
postconf -e mynetworks=192.168.0.0/24
postconf -e header_checks=regexp:/etc/postfix/header_checks
postconf -e relayhost=mail.example.com
猫/等/postfix/recipient_canonical_map
/./ [email protected]