Answers:
不,这不是直接可能的。http://www.postfix.org/ADDRESS_REWRITING_README.html#luser_relay中描述了一个例外,它如何工作
另一个简单的解决方案是使用SQL(substr + concat)在中为您处理此问题virtual_alias_maps
。
编辑:哦。最后一种可能性。使用策略委派机制,如果您不想重写,请返回REDIRECT localpart@other-domain.example
到需要的地方DUNNO
。
编辑2:受Squidly启发(但他的解决方案无效!),您可以设置
virtual_alias_maps = pcre:/etc/postfix/forward_user.pcre, ...
并在该文件中
/^(.*)@adomain\.example/ $(1)@other-domain.example
(请注意第一列中的转义点(\。)。)就我个人而言,我希望使用此版本。
如果您将MySQL用作存储端,我相信您可以像这样指定全部捕获:
表转发
| source | destination |
|==============|===============|
| @example.com | @yoursite.com |
如果我正确阅读了文档说明,那将意味着user1@example.com现在将转发到user1@yoursite.com,以此类推。
我在howtoforge教程中找到了这个
不可能直接吗?我发现它非常简单直接,没有SQL,正则表达式或策略机制。
在main.cf
:
virtual_alias_domains = alias-destination1.com alias-destination2.com
virtual_alias_maps = hash:/etc/postfix/virtual
在/etc/postfix/virtual
:
# I want @true-destination.com to have two incoming aliases
@alias-destination1.com @true-destination.com
@alias-destination2.com @true-destination.com
从服务器发送测试电子邮件:
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 smtp.myserver.com ESMTP Postfix
HELO smtp.myserver.com
250 smtp.myserver.com
MAIL FROM:<somebody@gmail.com>
RCPT TO:<anyuser@alias-destination1.com>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Message-ID: <4DC3723F.8010907@myserver.com>
Date: Thu, 05 May 2011 23:59:59 -0400
From: Some Body <somebody@gmail.com>
To: anyuser@alias-destination1.com
Subject: Hello
Just testing.
.
以及mail.log中的实际结果(我在端口10025上运行了amavis):
Apr 6 22:39:43 smtp-a postfix/smtpd[4411]: connect from localhost[127.0.0.1]
Apr 6 22:39:43 smtp-a postfix/smtpd[4411]: 6B47641AF2: client=localhost[127.0.0.1]
Apr 6 22:39:43 smtp-a postfix/cleanup[3706]: 6B47641AF2: message-id=<4DC3723F.8010907@myserver.com>
Apr 6 22:39:43 smtp-a postfix/qmgr[3681]: 6B47641AF2: from=<somebody@gmail.com>, size=1115, nrcpt=1 (queue active)
Apr 6 22:39:43 smtp-a postfix/smtpd[4411]: disconnect from localhost[127.0.0.1]
Apr 6 22:39:43 smtp-a amavis-incoming[2159]: (02159-13) Passed CLEAN {RelayedInternal}, LOCAL [127.0.0.1]:42426 [127.0.0.1] <somebody@gmail.com> -> <anyuser@alias-destination1.com>, Queue-ID: 5C61F41AE5, Message-ID: <4DC3723F.8010907@myserver.com>, mail_id: hUbzH1PtXlzl, Hits: 2.605, size: 394, queued_as: 6B47641AF2, 1224 ms
Apr 6 22:39:43 smtp-a postfix/lmtp[3687]: 5C61F41AE5: to=<anyuser@alias-destination1.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=25, delays=24/0/0/1.2, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 6B47641AF2)
Apr 6 22:39:43 smtp-a postfix/qmgr[3681]: 5C61F41AE5: removed
重点分开,以强调:
Apr 6 22:39:43 smtp-a postfix/smtp[3684]: 6B47641AF2: to=<anyuser@true-destination.com>, orig_to=<anyuser@alias-destination1.com>, relay=10.0.0.245[10.0.0.245]:2525, delay=0.03, delays=0.01/0/0/0.02, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 705AA40459)
Apr 6 22:39:43 smtp-a postfix/qmgr[3681]: 6B47641AF2: removed
根据您设置Postfix的方式,您也许可以使用别名转发所有邮件。
编辑
您也可以设置重定向,以便轻松完成。
在/etc/postfix/main.cf中添加以下内容:
recipient_bcc_maps = pcre:/etc/postfix/forward_bcc.pcre
然后在/etc/postfix/forward_bcc.pcre中添加以下内容:
/^user@olddomain.com/ user@newdomain.com
这有点hack,但是可以将特定用户从一个域转发到另一个域。
您可能还需要查看此页面,了解如何在Postfix本身中进行一些重写。
@somedomain.com
将所有邮件转发到特定的地址,但是我想知道是否可以转发到同一收件人。
postfix-pcre
软件包(ubuntu 12.10)