Mylić o alias_maps i virtual_alias_maps

22

Przeczytałem już ponownie dokumentację na ten temat, a także na innych postach tutaj i nadal jest to dla mnie bardzo niejasne. Testowałem różne rzeczy, aby zrozumieć różnicę między, alias_mapsi virtual_alias_mapsnie widzę zastosowania tych dwóch oddzielnych ustawień w Postfiksie. Oto, co do tej pory znalazłem (Uwaga - używam Postfiksa na tym samym serwerze, co mój serwer WWW jako klient zerowy, aby wysyłać tylko e-maile) :

1) plik / etc / aliases:

root: [email protected]

Kiedy dodam powyższe do alias_maps, zauważyłem, że niektóre usługi, takie jak fail2ban, są w stanie to wybrać i wysyła e-maile root do wymienionych adresów e-mail alias. Zauważyłem jednak również, że niektóre inne usługi (takie jak mailpolecenie) nie przestrzegają tego i próbują wysłać wiadomość e-mail bezpośrednio na adres root@moja_domena.com, który nie istnieje (myślę, że to myoriginustawienie Postfiksa , które dodaje @ moja_domena.com) . Aby to naprawić, dodałemvirtual_alias_maps

2) / etc / postfix / virtual

root     [email protected]

Po dodaniu powyższego wszystkie usługi korzystają z tego wirtualnego aliasu e-mail. Zauważyłem również, że po dodaniu powyższego, nawet fail2ban zaczyna ignorować moje początkowe ustawienia w /etc/aliases/pliku i zaczyna podążać za adresem e-mail podanym w pliku wirtualnym.

To jeszcze bardziej mnie zdezorientowało -

  1. Dlaczego potrzebujemy, /etc/aliases/gdy e-mail w wirtualnej mapie aliasów wydaje się go zastępować?

  2. Jaki jest cel posiadania tych dwóch oddzielnych mapowań aliasów i kiedy decydujemy, kiedy z nich korzystać?

  3. Dlaczego fail2ban (który jest skonfigurowany do wysyłania wiadomości e-mail root@localhost) najpierw podążył za adresem e-mail podanym w alias_maps(/ etc / aliases /), a później zdecydował się zignorować to, które raz virtual_alias_mapszostało dodane?

  4. Dlaczego wszystkie usługi nie czytają aliasów e-mail wymienionych w / etc / alias i działają tylko wtedy, gdy aliasy e-mail są dodawane do wirtualnej mapy aliasów?

Od wczoraj spędziłem kilka godzin i wciąż nie jestem pewien. Czy ktoś może mi pomóc usunąć moje zamieszanie?

EDYCJA: To jest dziennik poczty, gdy wiadomość e-mail jest wysyłana do roota za pomocą mail rootpolecenia. E-mail aliasy dla roota jest wymieniony w / etc / aliases /. Ale poczta nie działa, dopóki nie przeniosę wiadomości e-mail o aliasach głównych aliases_mapsdovirtual_aliases_maps

Zaloguj się, gdy główny alias e-mail jest wymieniony w /etc/aliases/:

Nov 14 16:39:27 Debian postfix/pickup[4339]: 0F12643432: uid=0 from=<root>

Nov 14 16:39:27 Debian postfix/cleanup[4495]: 0F12643432: message-id=<[email protected]>

Nov 14 16:39:27 Debian postfix/qmgr[4338]: 0F12643432: from=<[email protected]>, size=517, nrcpt=1 (queue active)

Nov 14 16:39:27 Debian postfix/error[4496]: 0F12643432: to=<[email protected]>, orig_to=<root>, relay=none, delay=0.04, delays=0.03/0/0/0.01, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to domainname.com[128.199.147.136]:25: Connection refused)

Jest to dziennik po przeniesieniu aliasów e-mail dla użytkownika root /etc/aliases/do /etc/postfix/virtualmiejsca, w którym dostarczenie wiadomości e-mail zakończyło się pomyślnie po zmianie:

Nov 14 16:44:58 Debian postfix/pickup[4545]: ADD9A43436: uid=0 from=<root>

Nov 14 16:44:58 Debian postfix/cleanup[4563]: ADD9A43436: message-id=<[email protected]>

Nov 14 16:44:58 Debian postfix/qmgr[4544]: ADD9A43436: from=<[email protected]>, size=453, nrcpt=1 (queue active)

Nov 14 16:45:00 Debian postfix/smtp[4551]: ADD9A43436: to=<[email protected]>, orig_to=<root>, relay=somesite.com[108.160.157.120]:25, delay=1.9, delays=0.03/0/0.97/0.88, dsn=2.0.0, status=sent (250 OK id=1XpEqC-0002ry-9s)

Nov 14 16:45:00 Debian postfix/qmgr[4544]: ADD9A43436: removed
Neel
źródło
I also noticed that some other services (like mail command) does not respect this-> proszę pokazać wpis maillog związany z tym warunkiem
masegaloeh
@masegaloeh Zaktualizowałem swój post za pomocą dziennika poczty
Neel

Odpowiedzi:

35

Trochę tła

Postfix odziedziczył niektóre funkcje ze starszych sendmailów, takie jak milter i aliasy. Plik /etc/aliasesjest częścią aliasesdziedziczenia i jest implementowany przez alias_maps. Z drugiej strony postfix ma virtual_maps/ virtual_alias_mapsdo obsługi aliasingu e-mail. Jaka jest różnica między nimi?

Parametr alias_maps

  • Używany tylko do dostawy lokalnej (8)

  • Zgodnie z klasą adresów w postfiksie , e-mail będzie dostarczany lokalnie (8), jeśli nazwy domen odbiorców są wymienione wmydestination

  • Dane wejściowe wyszukiwania były tylko częściami lokalnymi z pełnych adresów e-mail (np. Mój użytkownik z mój uż[email protected]). Odrzuca części domeny odbiorcy.

  • Wynik wyszukiwania może zawierać jedną lub więcej z następujących czynności:

    • adres e-mail : e-mail zostanie przekazany na adres e-mail
    • / file / name : adres e-mail zostanie dołączony do / file / name
    • | polecenie : poczta przesyłana potokowo do polecenia
    • : include: / file / name : dołącz alias z / file / name

Parametr virtual_alias_maps

  • Używany przez dostawę wirtualną (5)

  • Zawsze wywoływane po raz pierwszy przed innymi klasami adresów. Nie ma znaczenia, czy domena adresata została wymieniona na liście mydestination, virtual_mailbox_domainsczy w innych miejscach. Zastąpi adres / alias zdefiniowany w innych miejscach.

  • Dane wejściowe wyszukiwania mają pewien format

    • użytkownik @ domena : dosłownie dopasuje użytkownik @ domena

    • użytkownik : dopasuje użytkownika @ witryna, gdy witryna jest równa $myorigin, gdy witryna jest wymieniona w $mydestinationlub gdy jest wymieniona w $inet_interfaceslub $proxy_interfaces. Ta funkcja pokrywa się z funkcjonalnością lokalnej bazy danych aliasów (5).

    • @ domena : będzie pasować do każdego adresu e-mail przeznaczonego dla, domainniezależnie od lokalnych części

  • Wynik wyszukiwania musi być

    • Poprawny adres email
    • użytkownik bez domeny. Postfix zostanie dołączony, $myoriginjeśli jest append_at_myoriginustawiony tak

Dlaczego potrzebujemy / etc / aliasów, skoro e-mail w wirtualnej mapie aliasów wydaje się go zastępować?

Jak widać powyżej, alias_maps(/ etc / aliases) ma kilka dodatkowych funkcji (oprócz przekazywania), takich jak potokowanie do polecenia. Kontrastuje z virtual_alias_mapstym tylko e-mailem.

Jaki jest cel posiadania tych dwóch oddzielnych mapowań aliasów i kiedy decydujemy, kiedy z nich korzystać?

Te alias_mapswady są można odróżnić, czy odbiorca ma oryginalna forma [email protected] lub [email protected] . Oba zostaną zamapowane na wpis root alias_maps. W innych rękach możesz zdefiniować inny adres przekierowania za pomocą virtual_alias_maps.

Dlaczego fail2ban (który jest skonfigurowany do wysyłania wiadomości e-mail do root @ localhost) najpierw podążył za adresem e-mail podanym w alias_maps (/ etc / aliases /), a później postanowił zignorować to, że po dodaniu virtual_alias_maps?

Przed dodaniem virtual_alias_maps : root @ localhost został aliasowany przez, alias_mapsponieważ localhost był wymieniony w mydestination.

Po zdefiniowaniu map wirtualnych_alias : Wpis root(w mapach wirtualnych_alias) nie ma części domeny i lokalny host został wymieniony mydestination, więc będzie pasował root [email protected].

Dlaczego wszystkie usługi nie czytają aliasów e-mail wymienionych w / etc / alias i działają tylko wtedy, gdy aliasy e-mail są dodawane do wirtualnej mapy aliasów?

Polecenie mail rootwyśle ​​wiadomość e-mail do roota. Ponieważ brakuje części domeny, postfix trywialne przepisanie spowoduje dołączenie myorigin do części domeny. Tak więc poczta zostanie wysłana do root @ myorigin .

Przed dodaniem virtual_alias_maps : Niestety myoriginnie ma go na liście mydestination, więc nie będzie aliasu przez alias_maps.

Po dodaniu virtual_alias_maps : Wpis root(w virtual_alias_maps) nie ma części domeny i myorigin (oczywiście) takich samych jak myorigin, więc będzie pasować root [email protected].

masegaloeh
źródło
1
W zdaniu Te alias_mapswady są można różnicować ... słowo może prawdopodobnie miało być nie może . W przeciwnym razie nie mogę tego zrozumieć.
Daniel Böhmer
2
  1. /etc/aliasesczy jest tam przede wszystkim do dostarczania lokalnego, na przykład poczty do rootowania z crona itp., fajnie jest trzymać osobne lokalne aliasy, virtual_alias_mapsmożna go również używać z bazami danych SQL itd.

  2. virtual_alias_maps jest przeznaczony dla użytkowników wirtualnych (i domen wirtualnych), które często nie mapują użytkowników systemu, ale jeśli nie masz domen wirtualnych i bardzo niewielu użytkowników, taka funkcjonalność może nie być konieczna.

  3. fail2ban nie dba o to, po prostu przesyła wiadomość e-mail do MTA.

  4. Musisz sprecyzować, które usługi, jak i gdzie przesyłają pocztę?

NickW
źródło
Dziękuję @NickW kilka rzeczy: (1) Dla No: 4 polecenie mail jest jedną z usług, które to robi. Mam na myśli, że jeśli / etc / aliases jest przeznaczony głównie do lokalnego dostarczania użytkownikom lokalnym, czy mail rootpolecenie nie powinno faktycznie należeć do tej kategorii? Dlaczego ta usługa nie bierze pod uwagę informacji w / etc / alias, gdy jest to dostawa lokalna? (2) Biorąc to pod uwagę w moim scenariuszu, czy dobrą praktyką jest, aby użytkownik używał aliasów adresów e-mail wymienionych w obu tych /etc/aliasespolach, virtual_alias_mapsaby działały na wszystko?
Neel
1
1. Ok, /etc/aliasesdomyślnie polecenie mail powinno używać naprawdę głupiego pytania, które uruchomiłeś newaliasespo aktualizacji pliku, prawda? 2. Powiedziałbym, że to przesada, jeśli ludzie będą odbierać pocztę z lokalnego komputera, warto skonfigurować skrypty tak, aby używały swojego właściwego adresu e-mail, w ten sposób będą one kierowane przez Postfix i dostarczane do właściwego miejsca docelowego.
NickW
cześć @NickW tak Zrobiłem przebudowane aliasy, używając newaliasespo zmianie. Jedyne, co mogę wymyślić, dlaczego nie używa aliasów, może być spowodowane ustawieniem Postfiksa, które dodaje się @$domain_namepo użytkowniku, a zatem virtual_alias_mapsjest potrzebne do przekierowania tych e-maili. Przeczytałem to w dokumentach Postfiksa i może dlatego mailpolecenie rootowania nie działa z aliases: postfix.org/STANDARD_CONFIGURATION_README.html#some_local W każdym razie bardzo dziękuję za pomoc w lepszym zrozumieniu tego Nicka. Naprawdę to doceniam .. :)
Neel
Cieszę się, że pomogłem :)
NickW