使用Postfix将邮件转发到域到另一个域中的相同地址


8

有没有一种方法可以配置Postfix接受域中的所有邮件(全部接收),然后将该电子邮件转发给其他域中的同一收件人,而无视收件人是否实际存在?

我将Postfix与MySQL帐户一起用于虚拟帐户。

Answers:


8

不,这不是直接可能的。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

(请注意第一列中的转义点(\。)。)就我个人而言,我希望使用此版本。


第三种解决方案对我有用。但是我必须安装该postfix-pcre软件包(ubuntu 12.10)
scytale 2014年

1

pcre表类型在我的系统上不可用,因此我执行了以下操作:

  • /etc/postfix/main.cf

    virtual_alias_maps = regexp:/etc/postfix/virtual
    
  • /etc/postfix/virtual

    /^([^@]*)@olddomain/ $(1)@newdomain
    

0

如果您将MySQL用作存储端,我相信您可以像这样指定全部捕获:

表转发

| source       | destination   |
|==============|===============|
| @example.com | @yoursite.com |

如果我正确阅读了文档说明,那将意味着user1@example.com现在将转发到user1@yoursite.com,以此类推。

我在howtoforge教程中找到了这个


0

不可能直接吗?我发现它非常简单直接,没有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

-1

根据您设置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将所有邮件转发到特定的地址,但是我想知道是否可以转发到同一收件人。
亚伯拉罕·韦格

在/ etc / aliases中将其设置如下。$ username:$username@newdomain.com
Squidly 2011年

@Squidly您的编辑不是正则表达式,将不起作用。您对/ etc / aliases的评论不起作用,因为OP仅具有虚拟用户。
mailq

@mailq。现在在我的服务器上是实时的。它非常适合多个重定向。他也没有说这些只是虚拟用户。它还提供了可供选择的选项。
2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.