Используйте Postfix для пересылки почты в домен на тот же адрес в другом домене


8

Есть ли способ настроить Postfix для приема любой почты для домена (перехватывать все), а затем пересылать эту электронную почту тому же получателю в другом домене, не зная, существует ли получатель на самом деле?

Я использую Postfix с поддержкой MySQL для виртуальных учетных записей.

Ответы:


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

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 (у меня работает amavis на порту 10025):

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

Это что-то вроде хака, но оно будет работать для пересылки определенных пользователей из одного домена в другой.

Вы также можете посмотреть на этой странице, как сделать переписывание в Postfix самостоятельно.


Можете быть более конкретными? Я знаю, что могу указать @somedomain.comпересылку всей почты на определенный адрес, но я хочу знать, могу ли я переслать тому же получателю.
Авраам Вег

в / etc / aliases настройте его следующим образом. $ username: $username@newdomain.com
Squidly

@Squidly Ваше редактирование не является регулярным выражением и не будет работать. Вы комментируете / etc / aliases не будет работать, так как у OP есть только виртуальные пользователи.
mailq

@mailq. Это LIVE на МОЕМ сервере прямо сейчас. Он отлично работает для нескольких перенаправлений. Также он не сказал, что это были ТОЛЬКО виртуальные пользователи. Это также давало варианты, чтобы посмотреть.
Squidly
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.