Postfiks: czym dokładnie są domeny aliasowe?

12

Myślałem, że zrozumiałem „Domeny aliasu”, ponieważ jest to po prostu alias dla innej domeny! Kiedy więc skonfiguruję skrzynkę pocztową, taką jak „[email protected]” i dodam „alias.com” jako alias domeny dla „main.com”, adres „[email protected]” również będzie działał ... Ale nie !

Dodałem więc te domeny:

  • main.com
  • alias.com

Utworzyłem tę skrzynkę pocztową:

Następnie zmapowałem te domeny aliasowe:

  • alias.com => main.com

A potem, gdy wysyłam wiadomość na adres [email protected], pojawia się ten błąd:

Recipient address rejected: User unknown in virtual mailbox table (state 13).

Nie chcę tworzyć aliasu dla każdej domeny, ponieważ mam kilka. Nie chcę też używać symboli wieloznacznych (takich jak info @ *), ponieważ istnieją również inne domeny, które nie są aliasamimain.com

Więc ... co to dokładnie jest?

skerit
źródło
Spodziewałem się tego samego i nadal nie rozumiem, dlaczego tak nie jest.
Josh M.

Odpowiedzi:

4

Wyjaśnienie znajduje się w dokumentacji: http://www.postfix.org/VIRTUAL_README.html#virtual_alias

Chcesz „aliasowych skrzynek pocztowych”, czyli virtual_mailbox_alias i virtual_mailbox_maps, ale mów o „domenach aliasowych”: http://www.postfix.org/ADDRESS_CLASS_README.html#virtual_alias_class

mailq
źródło
3
Dokumenty nie wydają się mieć sensu - skąd masz domain1.comalias do jakiejkolwiek skrzynki pocztowej <mailbox>@domain2.com?
Josh M.
2
@JoshM. Możesz użyć tabeli skrótów virtual_alias_mapsz wpisem formularza @domain1.com @domain2.com. Zobacz moją odpowiedź, aby poznać szczegóły.
Sam Hanes,
12

Dodanie alias.comdo virtual_alias_domainsjest poprawnym pierwszym krokiem, ale to tylko mówi Postfix, że chcesz użyć tej domeny do aliasów. Nie mówi, jakie powinny być aliasy. W tym celu musisz użyć wirtualnej mapy aliasów.

Najpierw dodaj coś takiego do main.cf:

virtual_alias_domains = alias.com
virtual_alias_maps = hash:/etc/postfix/virtual

Dodanie virtual_alias_mapspowoduje uzyskanie pliku ( /etc/postfix/virtual), który jest używany jako wirtualna mapa aliasu. Ale co umieścisz w tym pliku? Według wirtualnej (5) strony :

Format wejściowy dla polecenia postmap (1) jest następujący:

  pattern address, address, ...

Gdy wzór pasuje do adresu e-mail, zastąp go odpowiednim adresem.

i

Przy wyszukiwaniu z zaindeksowanych plików, takich jak DB lub DBM, lub z tabel sieciowych, takich jak NIS, LDAP lub SQL, każde zapytanie @ użytkownik domeny tworzy sekwencję wzorców zapytań, jak opisano poniżej. Każdy wzorzec zapytania jest wysyłany do każdej określonej tabeli odnośników przed wypróbowaniem następnego wzorca zapytania, aż do znalezienia dopasowania.

...

@domain address, address, ...

Przekierowuj pocztę do innych użytkowników w domenie na adres.

i

Wynik wyszukiwania podlega przepisywaniu adresu: gdy wynik ma postać @otherdomain, staje się tym samym użytkownikiem otherdomain. Działa to tylko dla pierwszego adresu w wyniku wyszukiwania wielu adresów.

Dlatego umieszczenie tego /etc/postfix/virtualspowoduje uzyskanie pożądanego aliasu pełnej domeny:

# map any <user>@alias.com to the matching <user>@main.com
@alias.com     @main.com

Następnie, ponieważ plik ten jest tabelą skrótów, musisz uruchomić postmap( wyjaśnienie , strona podręcznika ):

postmap /etc/postfix/virtual

Więcej informacji o domenach wirtualnych można znaleźć w HOWTO domeny wirtualnej Postfix oraz o aliasach w HOWTO przepisywania adresów Postfix .

Sam Hanes
źródło
Tak więc interfejs PostfixAdmin ma błąd , ponieważ interfejs ( edit.php?table=aliasdomain) nie mówi użytkownikowi, że w rzeczywistości nie pojawi się alias podczas oznaczania go jako włączony.
Peter Krauss,
2
Nie powiedziałbym, że to błąd, ponieważ w rzeczywistości konfiguruje on wirtualną domenę aliasu. Podejrzewam raczej, że PostfixAdmin oczekuje, że wiesz, czym są wirtualne domeny aliasów Postfix, i że musisz także dodać rzeczywiste aliasy, aby mogły cokolwiek zrobić. Prawdopodobnie byłoby jednak lepiej, gdyby ci to powiedział.
Sam Hanes,
1

@Josh M.

Nie mam pojęcia, czy jest to właściwy sposób i / lub dobra praktyka, ale używam czegoś takiego:

virtual_alias_maps = regexp:/etc/postfix/domain_rewriting pgsql:/etc/postfix/pgsql/     virtual_alias_maps.cf

$ cat /etc/postfix/domain_rewriting 
/^(.*)@domain1.com$/     ${1}@domain2.com
Maximilian Kaul
źródło
1
Chociaż nie jest to całkowicie niepoprawne (zrobi to, czego oczekujesz), użycie tabeli wyrażeń regularnych jest mniej wydajne niż użycie tabeli skrótów ze @domain1.com @domain2.comskładnią, którą szczegółowo opisałem w mojej odpowiedzi.
Sam Hanes,
1

To jest moja krótka wersja odpowiedzi @ sam-hanes (która zadziałała dla mnie)

W swoich mapach wirtualnych_alias dodaj:

@from.domain <tab> @to.domain

W wierszu polecenia wykonaj:

 postmap /path/to/yourvirtualalismapsfile

W pliku main.cf dodaj:

virtual_alias_domains : from.domain

virtual_alias_domains informuje postfiks, że wszystkie adresy skrzynek pocztowych w formie [email protected] są aliasami.

ychaouche
źródło