Postfix master.cf kontra main.cf

12

Często widzę, że te same ustawienia można określić zarówno w main.cf, jak i w master.cf przy użyciu prefiksu -o.

Moje pytanie brzmi: czy jedno ma pierwszeństwo przed drugim, a jeśli tak, to który plik ma pierwszeństwo, jeśli w obu znajdzie się to samo ustawienie (o innej wartości)?

Na przykład jeśli

smtpd_tls_auth_only=yes

został określony w main.cf, ale

-o smtpd_tls_auth_only=no 

został określony w master.cf, na który postfiks należy zwrócić uwagę?

Dale Anderson
źródło

Odpowiedzi:

12

Jak udokumentowano ,

-o name=value
                 Override  the  named  main.cf  configuration
                 parameter.

main.cfustawia wartości domyślne używane przez wszystkie usługi zdefiniowane w master.cf; -o opcje w master.cf mogą zastąpić je dla poszczególnych usług.

adapttr
źródło
4

Zasadniczo ustawienia w main.cf są poprawne i używane globalnie, chyba że zostaną zastąpione w master.cf dla określonych demonów Postfix (smtpd, trywialne przepisywanie, czyszczenie, pobieranie, ...). Możesz określić na przykład smtp_tls_security_level = mayw main.cf i wyłączyć go dla portu przesyłania powiązanego z localhost dla smtpddemona:

localhost:submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=none

Ale w przypadku portu przesyłania na zewnętrznym adresie IP możesz wymusić szyfrowanie:

1.2.3.4:submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o ...

W niektórych sytuacjach może być konieczne zastąpienie ustawienia globalnego, na przykład podczas korzystania z Amavisd, mapowania adresów (rozszerzenie aliasu itp.) Muszą być wyłączone podczas wysyłania poczty przez smtpddemona Amavisd . W przeciwnym razie adresaci mogą otrzymywać zduplikowane wiadomości:

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
  -o content_filter=
  -o ...
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings
  -o ...

Oczywiście podczas zwykłej pracy poza Amavisem chcesz mapować adresy, więc domyślnie są one włączone w main.cf.

daff
źródło
1
Nie można po prostu ustawić nowego portu IP: dla usługi; tworzy to drugą instancję usługi o tej samej nazwie (potencjalnie mylącą) i jest bardziej niż prawdopodobne poza zasięgiem PO. Jeśli wykonujesz zduplikowane usługi, zawsze ustaw -o syslog_name=secondservicerozróżnianie usługi w dziennikach.
adapttr
Dzięki za komentarz, ale jestem tego świadomy. Wiele hostów usług jest wymaganych przy hostowaniu wielu domen z różnymi certyfikatami SSL, a zatem różnymi adresami IP. Po prostu podałem rzeczywisty przykład, w którym można zastąpić ustawienia z main.cf w master.cf.
daff
Nie odpowiedział na pytanie OP i nie zawierał zmiany nazwy syslog_, którą wyjaśniłem powyżej. Nie uważam tego za „rzeczywisty” i nie widzę, gdzie się w nim znajdują „certyfikaty SSL”.
adapttr
Odpowiedziałem na pytanie OP w pierwszym zdaniu. I tak, jest to przykład z realnego świata, wzięty z jednego z naszych serwerów Postfix obsługujących 18 domen. „Certyfikaty SSL” wchodzą w to, ponieważ w Postfix nie ma czegoś takiego jak wirtualny hosting oparty na nazwie SSL (w praktyce), więc należy przypisać jeden adres IP na domenę. W przeciwnym razie nie ma możliwości przedstawienia klientom poprawnych certyfikatów SSL. Aby to zrobić wiele wystąpień smtpdusługi są potrzebne, każdy z różnymi ustawieniami myhostname, smtpd_tls_key_file, smtpd_tls_cert_filei tak dalej. Te ustawienia zastępują main.cf.
daff