Postfix + Dovecot - 如何接收任何用户的邮件@ anydomain

时间:2016-01-26 16:26:45

标签: email postfix-mta dovecot

所以主要的想法是我想做这样的事情:

1)我发送电子邮件至anyrandomuser@anyofmydomain.com

2)我用Dovecot收到它,或者至少将它存放在maildir中,如:  / vmail /%anydomain /%anyuser

我试过这样的事情:

cat /etc/postfix/main.cf

inet_interfaces = all
inet_protocols = ipv4

relay_domains = *
virtual_mailbox_domains=hash:/etc/postfix/vmail_domains
virtual_mailbox_maps=hash:/etc/postfix/vmail_mailbox

virtual_mailbox_base = /var/vmail
virtual_minimum_uid = 2222
virtual_transport = virtual
virtual_uid_maps = static:2222
virtual_gid_maps = static:2222

cat / etc / postfix / vmail_mailbox

@d1.com     d1.com/catchall/
@d2.com     d2.com/catchall/
@d3.com     d3.com/catchall/

所以这很好用。但它仅限于/ etc / postfix / vmail_mailbox中的域名列表,并且所有邮件都在同一目录中。我尝试用pcre-map进行一些排序,如下所示:

cat / etc / postfix / vmail_mailbox_pcre

/([^\@]+)@([^\s]+)/ ${2}/${1}/

但它不起作用。这就是我在日志中得到的:

Jan 26 09:41:04 localhost postfix/virtual[5579]: warning: pcre map /etc/postfix/vmail_mailbox_pcre, line 1: regular expression substitution is not allowed: skipping this rule

有没有人这样做过?我愿意接受任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

接收邮件似乎对您有用,问题似乎在于根据收件人域对邮件进行排序。 dovecot sieve extension可能是你想要使用排序的。

Dummy <- matrix(runif(100000000,0,3), ncol = 10000) system.time(apply(Dummy,1,function(x) NULL)) ## user system elapsed ## 1.360 0.160 1.519 system.time(apply(Dummy,2,function(x) NULL)) ## user system elapsed ## 0.94 0.12 1.06 的问题是正则表达式分隔符(apply())的使用次数超过两次,因此正则表达式引擎会混淆。尝试使用其他一些非字母数字字符:

/etc/postfix/vmail_mailbox_pcre