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 localhost
jako 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_hostname
zmiennej 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 ustawionaprimary_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 :(
hostname -f
nadal zgłasza „localhost”. Część dotycząca / etc / hosts w twojej odpowiedzi wydaje się błędna - jak powinna wyglądać pierwsza płyta?hostname -f
nadal 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 :)/etc/hostname
zazwyczaj nie zawiera nazwy FQDN w systemach Debian, tylko krótka nazwa hosta./etc/hosts
może być127.0.0.2 mydomain.com myhostname
(127.0.0.2
dział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
, alelocalhost
jest to kanoniczna nazwa hosta127.0.0.1
, prawda? Wszystko pod warunkiem, że masz nazwę hosta, a nie FQDN jako nazwę hosta. Również zmiana/etc/hostname
nie wchodzi w życie natychmiast, musiszhostname myhostname
. Lub zrestartuj serwer.Jeśli używasz jednego pliku konfiguracyjnego, ustaw zmienną PRIMARY_HOST_NAME na żądaną nazwę:
Na przykład w /etc/exim4/exim4.conf:
lub ustaw
MAIN_HARDCODE_PRIMARY_HOSTNAME
w update-exim4.conf.conf, jeśli używasz konfiguracji podzielonego pliku.Aby być bezpiecznym, uruchom ponownie exim.
źródło
HELO 'mybox.mydomain.com'
co przerywa wysyłanie poczty do Google, być może innych.update-exim4.conf
po zmianie konfiguracji. Po tym generalnie restart nie jest już potrzebny.exim
ogó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.conf
zawierało tylko powyższą linię , ale w momencie tworzenia pliku/var/lib/exim4/config.autogenerated
zostaje zignorowany .../etc/exim4/exim4.conf.localmacros
, dla podziału/etc/exim4/conf.d/main/000_localmacros
(main
najpierw pliki w katalogu są przetwarzane). I uruchomupdate-exim4.conf
+systemctl reload exim4
po wprowadzeniu zmian.Podstawowa nazwa hosta jest monitowana podczas instalacji exim4. Możesz uruchomić polecenie
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.
źródło
/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 wFrom
nagłówku.primary_hostname
Zmiennej 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/hostname
i/etc/hosts
. Plik nazwy hosta powinien zawierać krótką nazwę hosta (np.foo
), A plik hostów powinien zawierać pozycję rozdzielającąfoo
nafoo.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, ahostname -f
wyjś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ć:
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 -f
i sprawdź, czy zwraca ona nazwę FQDN serwera.Na koniec zrestartuj Exima, np .:
Następnie powinieneś zacząć widzieć go poprawnie HELO. Jego zmienną można zweryfikować, uruchamiając:
(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).
źródło
/usr/sbin/exim4 -bP primary_hostname
nie 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.helo_data
jest$primary_hostname
. W systemach Debian możesz go zastąpić za pomocąREMOTE_SMTP_HELO_DATA
zmiennej, ale jeśli właściwie ustawisz podstawową nazwę hosta, nie jest to konieczne./etc/hosts
. I proszę tylko, aby nie nazywać właściwego, co nie jest ogólnie akceptowane.po dodaniu tego samego ciągu w / etc / hosts nazwa hosta -f zwróci twoją nazwę FQDN
źródło
myhostname
idzie do/etc/hostname
(następniehostname myhostname
). I127.0.0.1 mydomain.com myhostname.com localhost
idzie do/etc/hosts
. Plus przeładuj naexim
wszelki wypadek.Mam ten sam problem. Muszę zmienić nazwę hosta poczty, ponieważ niektóre e-maile zawodzą, gdy zostały wysłane. Z tym błędem:
Więc zmieniam go na
/etc/exim.config
parametr nazwa_hosta_podstawowaNiektóre kod tego pliku:
źródło
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.
źródło