Jak mogę zmienić podstawową nazwę hosta Exim4 na polu Debiana?

24

Niektóre zdalne serwery SMTP, które próbuję dostarczyć pocztą, odmawiają przyjęcia HELO z mojego serwera:

504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname

Najwyraźniej mój serwer Exim4 wysyła localhostjako swoją FQDN. Przeszukując sieć i kilka plików konfiguracyjnych, dowiedziałem się, że wartość wysyłana jako FQDN podczas HELO jest pobierana ze primary_hostnamezmiennej konfiguracyjnej.

Moje pytanie brzmi: jaki jest prawidłowy sposób zmiany tej zmiennej w systemie Debian? Wydaje mi się, że mogę po prostu zakodować wartość w jednym z plików konfiguracyjnych Exim4, ale IMHO wydaje się bardziej sensowne, jeśli wartość ta odpowiada automagicznie/etc/mailname lub innej scentralizowanej konfiguracji nazwy.

Mam wrażenie, że odpowiedź na moje pytanie można znaleźć w tym tekście z wiki Debiana :

Nazwa używana przez Exim w EHLO / HELO jest pobierana z opcji konfiguracji primary_hostname. Domyślna konfiguracja exim4 Debiana nie została ustawiona primary_hostname. Exim następnie domyślnie uname (), aby znaleźć nazwę hosta. Jeśli to wywołanie zwraca tylko jeden składnik, do uzyskania w pełni kwalifikowanej nazwy hosta używana jest metoda gethostbyname () lub getipnodebyname ().

Jeśli twoje Exim HELO jako localhost.localdomain, najprawdopodobniej masz źle skonfigurowane / etc / hosts utworzone przez niektóre wersje instalatora Debiana. W takim przypadku napraw swój plik / etc / hosts.

Niestety, nie jestem wystarczająco zaznajomiony z administracją serwera Linux, aby dokładnie wiedzieć, co to wszystko oznacza :(

Jørn Schou-Rode
źródło

Odpowiedzi:

21

Twój plik / etc / hosts powinien zawierać co najmniej dwa rekordy. Pierwszy zapis powinien mieć postać:

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

drugi powinien mieć postać:

127.0.0.1 localhost

Musisz także upewnić się, że plik / etc / hostname zawiera nazwę FQDN serwera, a po uruchomieniu hostname -fzwraca nazwę FQDN serwera. Jeśli upewnisz się, że wszystko jest poprawne, i ponownie uruchom Exima, powinieneś zacząć widzieć go poprawnie HELO.

Paul Lathrop
źródło
Zmieniłem / etc / hostname z nazwy komputera lokalnego na FQDN. hostname -fnadal zgłasza „localhost”. Część dotycząca / etc / hosts w twojej odpowiedzi wydaje się błędna - jak powinna wyglądać pierwsza płyta?
Jørn Schou-Rode
1
Podczas gdy hostname -fnadal raportuje „localhost”, wydaje się, że zmiana na / etc / hostname załatwiła sprawę - jestem w stanie dostarczyć moją pocztę teraz. Nadal chciałbym zobaczyć brakującą część twojego postu :)
Jørn Schou-Rode
Ups! Formatowanie flub. Naprawiono :-)
Paul Lathrop
1
/etc/hostnamezazwyczaj nie zawiera nazwy FQDN w systemach Debian, tylko krótka nazwa hosta.
Josip Rodin
Cóż, pierwsza linia /etc/hostsmoże być 127.0.0.2 mydomain.com myhostname( 127.0.0.2działa również 127.0.0.1, ponieważ sprzężenie zwrotne jest siecią klasy A). Prawdopodobnie możesz połączyć dwie linie w jedną 127.0.0.1 mydomain.com myhostname localhost, ale localhostjest to kanoniczna nazwa hosta 127.0.0.1, prawda? Wszystko pod warunkiem, że masz nazwę hosta, a nie FQDN jako nazwę hosta. Również zmiana /etc/hostnamenie wchodzi w życie natychmiast, musisz hostname myhostname. Lub zrestartuj serwer.
x-yuri
8

Jeśli używasz jednego pliku konfiguracyjnego, ustaw zmienną PRIMARY_HOST_NAME na żądaną nazwę:

Na przykład w /etc/exim4/exim4.conf:

PRIMARY_HOST_NAME = mybox.mydomain.com

lub ustaw MAIN_HARDCODE_PRIMARY_HOSTNAMEw update-exim4.conf.conf, jeśli używasz konfiguracji podzielonego pliku.

Aby być bezpiecznym, uruchom ponownie exim.


źródło
Tylko uwaga, że ​​host na liście nie może być w cudzysłowie, w przeciwnym razie exim wysyła, HELO 'mybox.mydomain.com'co przerywa wysyłanie poczty do Google, być może innych.
mkomarinski
1
Nie mogę znaleźć wzmianki o tej nazwie zmiennej „PRIMARY_HOST_NAME” w dokumentacji. Gdzie to znalazłeś?
Josip Rodin
Na Debianie musisz uruchomić update-exim4.confpo zmianie konfiguracji. Po tym generalnie restart nie jest już potrzebny.
x-yuri
... Cóż, eximogólnie wydaje się zauważać zmiany w konfiguracji bez przeładowania. Ale ładowanie jest prawdopodobnie bezpieczniejsze, ponieważ przypuszczam, że sam demon nie ponownie czyta konfiguracji aż do ponownego załadowania. Następnie sprawiasz, że brzmi to tak, jakby /etc/exim4/exim4.confzawierało tylko powyższą linię , ale w momencie tworzenia pliku /var/lib/exim4/config.autogeneratedzostaje zignorowany ...
x-yuri
... „Rozwidlone procesy, które uruchamia Exim dla odbierania SMTP lub uruchamiania kolejki, użyłyby nowego pliku konfiguracyjnego, podczas gdy oryginalny główny demon exim nadal używałby starego pliku konfiguracyjnego.” Tak więc, dla pojedynczego pliku konfiguracyjnego najlepiej jest użyć /etc/exim4/exim4.conf.localmacros, dla podziału /etc/exim4/conf.d/main/000_localmacros( mainnajpierw pliki w katalogu są przetwarzane). I uruchom update-exim4.conf+ systemctl reload exim4po wprowadzeniu zmian.
x-yuri
4

Podstawowa nazwa hosta jest monitowana podczas instalacji exim4. Możesz uruchomić polecenie

sudo dpkg-reconfigure exim4-config

ponownie przejrzeć monity.

O ile mi wiadomo, jeśli już używasz „podzielonej konfiguracji” (wiele małych plików w /etc/exim4/conf.d) i zdecydujesz się trzymać tego po wyświetleniu monitu, dpkg-rekonfiguracja nie powinna zastępować żadnego z istniejące zmiany konfiguracji inne niż ustawienia, o które prosi, ale jak zawsze powinieneś zrobić kopię zapasową, aby być bezpiecznym.

David North
źródło
2
Wydaje się, że prosi tylko o „nazwę poczty [która] powinna być pojedynczą, w pełni kwalifikowaną nazwą domeny (FQDN)”. Jednak to ustawienie jest już poprawne, a HELO nadal wydaje się mówić „localhost”.
Jørn Schou-Rode
Co mówisz to nazwa mail, który idzie, niespodzianka, /etc/mailname. Domyślnie służy do kwalifikowania niekwalifikowanych adresów . Te, które składają się tylko z nazwy użytkownika. Dodając nazwę domeny z /etc/mailname. Wynikowy adres jest używany w Fromnagłówku.
x-yuri
2

primary_hostnameZmiennej jest wypełnione zgodnie z pełni kwalifikowaną nazwę domeny (FQDN) systemu. W Debianie i pokrewnych systemach jest to zwykle tworzone przy użyciu zawartości plików /etc/hostnamei /etc/hosts. Plik nazwy hosta powinien zawierać krótką nazwę hosta (np. foo), A plik hostów powinien zawierać pozycję rozdzielającą foona foo.bar.baz, tj. Nazwę hosta z sufiksem domeny (zwykle pasującym do pozycji DNS).

Dane wyjściowe polecenia hostname(bez żadnych parametrów) zwrócą to pierwsze, a hostname -fwyjście zwróci drugie.

Plik nazwy hosta jest zwykle wypełniany podczas instalacji, a plik hosts można edytować, aby mieć w nim jeszcze jeden rekord obok domyślnych rekordów localhost - powinien on mieć postać:

<IP address> <hostname FQDN> <hostname>

Trzy kolumny powinny być oddzielone spacjami lub tabulatorami, to nie ma znaczenia. Adres IP może być 127.0.0.1, podobnie jak localhost, ale część nazwy hosta jest zgodna z nazwą hosta systemu, a środkowa część powinna być FQDN, tj. Nazwa hosta z sufiksem domeny.

Aby sprawdzić, czy linia działa, po prostu uruchom hostname -fi sprawdź, czy zwraca ona nazwę FQDN serwera.

Na koniec zrestartuj Exima, np .:

sudo service exim4 restart

Następnie powinieneś zacząć widzieć go poprawnie HELO. Jego zmienną można zweryfikować, uruchamiając:

/usr/sbin/exim4 -bP primary_hostname

(NB: Pierwotnie zrobiłem to jako edycja odpowiedzi z 2009 roku, ale zostało odrzucone. Pierwotnie naprawiałem to: nie było potrzeby powtarzania domyślnego rekordu hosta lokalnego, po prostu wyjaśnij, co należy dodać; wyjaśnij, który dodatek Można użyć adresu IP; wyjaśnić, co to jest FQDN; wyjaśnić, jak zweryfikować sam exim).

Josip Rodin
źródło
/usr/sbin/exim4 -bP primary_hostnamenie działa Możesz zweryfikować nazwę hosta HELO, wysyłając testową wiadomość e-mail do modułu sprawdzającego autentyczność portu 25 lub do dowolnej innej skrzynki pocztowej, w której możesz zobaczyć oryginał. Więcej na ten temat tutaj . Rozważ zaktualizowanie swojej odpowiedzi.
x-yuri
Działa dobrze na mojej stabilnej maszynie Debiana (stretch). Czy możesz wyjaśnić dokładnie, że to nie działa dla ciebie? Uwaga: dokumentacja na exim.org/exim-html-current/doc/html/spec_html/… wyraźnie stwierdza, że ​​domyślna helo_datajest $primary_hostname. W systemach Debian możesz go zastąpić za pomocą REMOTE_SMTP_HELO_DATAzmiennej, ale jeśli właściwie ustawisz podstawową nazwę hosta, nie jest to konieczne.
Josip Rodin
Wydaje mi się, że próbowałem i narzekałem na brak dyskusji. Ale nie mogę go teraz odtworzyć, więc nieważne, mój zły. Odnośnie do „jeśli właśnie ustawiłeś swoją podstawową nazwę hosta”, ogólnie nie jest akceptowane, że nazwa hosta musi rozwiązać wszystko. Powiedzmy więc „jeśli ustawisz nazwę hosta w taki sposób, w jaki exim oczekuje, że ...” i zostawmy to :)
x-yuri
Przykro mi, ale nie sądzę, że rozsądnie jest przyjmować ad hoc wnioski z długiej dyskusji nad debianem, które odbyły się ponad dziesięć lat temu, na pierwszy rzut oka. Przydałoby się wskazanie dokumentu politycznego dotyczącego takiej sprawy.
Josip Rodin
To najlepsze, co mogłem znaleźć. Jeśli znajdziesz coś lepszego lub dowód na twoje słowa, byłbym szczęśliwy, gdybyś mi powiedział. Na razie mogę tylko powiedzieć, że nawet w dzisiejszych czasach są ludzie, którzy nie podają nazwy hosta /etc/hosts. I proszę tylko, aby nie nazywać właściwego, co nie jest ogólnie akceptowane.
x-yuri
1

po dodaniu tego samego ciągu w / etc / hosts nazwa hosta -f zwróci twoją nazwę FQDN

mój kod
źródło
Innymi słowy, myhostnameidzie do /etc/hostname(następnie hostname myhostname). I 127.0.0.1 mydomain.com myhostname.com localhostidzie do /etc/hosts. Plus przeładuj na eximwszelki wypadek.
x-yuri
0

Mam ten sam problem. Muszę zmienić nazwę hosta poczty, ponieważ niektóre e-maile zawodzą, gdy zostały wysłane. Z tym błędem:

host receiver.server.com [200.200.200.200]: 550 <[email protected]>: Sender address rejected: Domain not found

Więc zmieniam go na /etc/exim.configparametr nazwa_hosta_podstawowa

Niektóre kod tego pliku:

smtp_connect_backlog = 50
smtp_accept_max = 100

#primary_hostname = myhostname.com 
deliver_queue_load_max = 3
Diego Gallardo
źródło
Hah, ten post pomaga mi z „primary_hostname”, a teraz mój exim działa lepiej niż kiedykolwiek :)
0

w WHM goto Exim Configuration Manager -> Zaawansowany edytor

przewiń w dół, aż znajdziesz „Dodaj dodatkowe ustawienia konfiguracji” (duży niebieski przycisk) i kliknij go.

w nowym wierszu dodaj [nazwa_hosta_podstawowego] = [moja_domena.com]

przewiń w dół i kliknij Zapisz.

Satalink
źródło