postfix - jak przekierować wszystkie wiadomości e-mail do jednego użytkownika, np. *@example.com → użytkownik@example.com


27

Używam Postfiksa do mojego e-maila. Wiem, że mogę użyć polecenia / etc / aliases and newaliases do przekierowania niektórych wiadomości e-mail, np. Mogę przekierować root@example.com na user@example.com, umieszczając root: usermoje / etc / aliasses, a następnie uruchamiając newaliases. Chciałbym jednak zrobić ekwiwalent *: user, aby wszystkie e-maile do example.com zostały wysłane na adres użytkownik@example.com.

Jak mam to zrobic?

Odpowiedzi:


19

luser_relay = user@example.comw twoim main.cfjest to czego chcesz.

Aby wyłączyć sprawdzanie przez użytkownika i zaakceptować wszystkie wiadomości e-mail, musisz dodać local_recipient_maps =opcję. Dokumentacja


1
Dodałem to do main.cf i zrestartowałem postfiks. Otrzymałem następujący błąd w /var/log/main.info: <pre> 550 5.1.1 <myrandom@example.org>: Adres odbiorcy odrzucony: Użytkownik nieznany w lokalnej tabeli adresatów; od = <me@gmail.com> do = <myrandom@example.org> </pre>
Rory

Więc example.org nie znajduje się na twojej liście domen lokalnych adresatów lub coś innego zostało źle skonfigurowane.
womble

7
Mam to działa. Oprócz wspomnianej opcji luser_relay należy również dodać opcję „local_recipient_maps =”. Ta strona dokumentacji Postfiksa wyjaśnia, że: postfix.org/postconf.5.html#luser_relay
Rory

Czy ta metoda zachowuje adres e-mail Do? (wirtualne mapy przepisują go, a oryginalny adres Do: został utracony.)
user14645

1
@Poważne pytania dotyczą pytań, a nie komentarzy do siedmioletnich odpowiedzi na pytania styczne.
womble

17

To, czego szukasz, to wirtualna tabela aliasów, którą można wykonać za pomocą następujących ...

Najpierw musisz edytować lub utworzyć, jeśli jeszcze nie istnieje, plik / etc / postfix / virtual .

example.com   whatever
@example.com  user@example.com

Po tym, jak zostanie to zapisane, musisz uruchomić postmap /etc/postfix/virtual, aby wygenerować indeksowany /etc/postfix/virtual.db Postfix będzie czytał.

Następnie musisz edytować plik /etc/postfix/main.cf i upewnić się, że nie masz komentarza w następującej linii:

virtual_alias_maps = hash:/etc/postfix/virtual

Dzięki temu postfix dowie się o wirtualnej tabeli aliasów i użyje jej.

Problem z korzystaniem z luser_relayopcji, o której wspominali inni, polega na tym, że lokalny agent dostawy traktuje to jako ostateczność dla nieznanych adresów. Jeśli postfiks obsługuje tylko pocztę dla jednej domeny, można to wykorzystać w tym celu, ale może maskować inne błędy konfiguracji i prawdopodobnie spowoduje nieoczekiwane wyniki, jeśli obsługiwana jest więcej niż jedna domena.

Jedynym zastrzeżeniem, o którym muszę wspomnieć, jest to, że tworząc wieloznaczny alias tego rodzaju, otwierasz swój system pocztowy, aby akceptować wiadomości na adresy, które nie będą istnieć, i ryzykujesz, że skrzynka pocztowa zostanie szybko wypełniona spamem z powodu nieistnienia skrzynki pocztowe.


8

To jest właściwie dość proste. Wszystko, co musisz zrobić, to umieścić coś takiego w swoim main.cfpliku:

virtual_alias_maps = regexp:/etc/postfix/virtual_alias

Ta regexpczęść załatwia sprawę. Ponadto /etc/postfix/virtual_aliaswłożysz coś takiego:

/^test/ you@yourdomain.com

W tym przykładzie powinieneś otrzymać całą pocztę z miejscem docelowym zaczynającym się od „test”. Nie zapomnij wysłać postmapy / etc / postfix / virtual_alias i ponownie załadować postfix.


6

Aby połączyć powyższą odpowiedź / komentarz, która była dla mnie najłatwiejsza (mam jedną domenę podstawową):
Dodaj następujące elementy do /etc/postfix/main.cf:

luser_relay = user@domain.com (or local system user)
local_recipient_maps =

( local_recipient_maps =nie ma ustawionej wartości)

Używam lokalnego konta linuksowego użytkownika, a także dodaję tego samego użytkownika do / etc / aliasów, aby użytkownik otrzymał całą pocztę do roota, postmastera itp.

Możesz także połączyć ten sam adres w swoim virtual_alias_mapsi wskazać dowolne hasła domeny wirtualnej na tym samym koncie podstawowym.

Więcej informacji można znaleźć w luser_relay .


3

Jeśli chcesz użyć adresu typu catch-all dla mojej domeny, możesz użyć /etc/aliaseskombinacji z wyrażeniem regularnym w następujący sposób:

W /etc/postfix/main.cfdodatku
alias_maps = hash:/etc/aliases, regexp:/etc/postfix/catch-all-local.regexp

W /etc/postfix/catch-all-local.regexpdodatku
!/^owner-/ your-catch-all-user

To powinno załatwić sprawę. To działało dla mnie i działa z ustawieniem równolegle virtual_alias_maps.


0

W Postfix jest mniej znany typ statycznej tabeli odnośników, który można wykorzystać do tego celu:

alias_database = static:user@example.com
alias_maps = static:user@example.com

Jeśli użytkownik@example.com nie jest lokalny dla tego systemu, prawdopodobnie również chcesz odrzucić wszystkie odesłane wiadomości, zastępując linie kończące bouncesię na discardin, master.cfaby uniknąć pętli poczty.


-4

Nienawidzę być zabójcą, ale twoim problemem jest to, że używasz Postfix. Postfix czyni to ćwiczenie bardzo trudnym. Wiem: musiałem to zrobić kilka lat temu i zajęło to wiele dni, aby wszystko było w porządku. Ta luseropcja jest właściwa, ale są też inne rzeczy, które należy podjąć. (I nawet nazwa opcji pokazuje, że autorzy Postfix tak naprawdę nie chcieli tego wspierać).

Polecam przejście na Kurier. Kurier obsługuje tę metodę „catch-all” w znacznie bardziej rozsądny sposób, ponieważ rozszerza swój istniejący system aliasów.


1
Postfix wcale nie utrudnia. Wirtualne aliasy są standardowym sposobem wykonywania zapadek w Postfix i są bardzo łatwe. To powiedziawszy, na niczym innym niż na zabawkowym serwerze pocztowym dla własnej domeny osobistej, catchalls to bardzo zły pomysł.
Rob Chanter
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.