Frage Wie ändere ich Exim4's primary_hostname auf einer Debian-Box?


Einige Remote-SMTP-Server, die ich versuche, E-Mails zuzustellen, weigern sich, die HELO von meinem Server zu akzeptieren:

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

Anscheinend sendet mein Exim4 Server localhost als sein FQDN. Nachdem ich das Netz und einige Konfigurationsdateien durchsucht habe, habe ich erfahren, dass der Wert, der während HELO als FQDN gesendet wird, von der primary_hostname Konfigurationsvariable.

Meine Frage ist: Was ist das? richtig Möglichkeit, diese Variable in einem Debian-System zu ändern? Ich denke, ich kann einfach einen Wert in einer der Exim4-Konfigurationsdateien fest codieren, aber IMHO scheint es mehr Sinn zu geben, wenn der Wert automatisch Entsprach /etc/mailname oder irgendeine andere zentralisierte Namenskonfiguration.

Ich habe das Gefühl, dass die Antwort auf meine Frage in diesem Text von gefunden werden kann das Debian-Wiki:

Der von Exim in EHLO / HELO verwendete Name wird aus der Konfigurationsoption übernommen primary_hostname. Debians exim4 Standardkonfiguration wird nicht gesetzt primary_hostname. Exim verwendet dann standardmäßig uname (), um den Hostnamen zu finden. Wenn dieser Aufruf nur eine Komponente zurückgibt, wird mit gethostbyname () oder getipnodebyname () der vollständig qualifizierte Hostname abgerufen.

Wenn Ihr Exim HELO als localhost.localdomain gilt, dann haben Sie wahrscheinlich ein falsch konfiguriertes / etc / hosts, das von einigen Versionen des Debian-Installers erstellt wurde. In diesem Fall beheben Sie bitte Ihre / etc / hosts.

Leider kenne ich die Linux-Serveradministration nicht genug, um genau zu wissen, was das alles bedeutet :(


23
2017-07-27 15:35


Ursprung




Antworten:


Ihre Datei / etc / hosts sollte mindestens zwei Datensätze enthalten. Der erste Datensatz sollte folgende Form haben:

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

der zweite sollte die Form haben:

127.0.0.1 localhost

Sie müssen auch sicherstellen, dass Ihre Datei / etc / hostname den vollqualifizierten Domänennamen des Servers enthält und dass dieser ausgeführt wird hostname -f Gibt den FQDN Ihres Servers zurück. Wenn Sie sicherstellen, dass all dies korrekt ist und Exim neu starten, sollten Sie HELO richtig sehen.


21
2017-07-27 15:45



Ich habe / etc / hostname von einem lokalen Computernamen in den FQDN geändert. hostname -f meldet immer noch "localhost". Der Teil über / etc / hosts in Ihrer Antwort scheint fehlerhaft - wie soll der erste Datensatz aussehen? - Jørn Schou-Rode
Während hostname -f meldet immer noch "localhost", es scheint, dass die Änderung zu / etc / hostname den Trick gemacht hat - ich kann jetzt meine Post liefern. Ich möchte trotzdem den fehlenden Teil deines Posts sehen :) - Jørn Schou-Rode
Hoppla! Formatierung flub. Fest :-) - Paul Lathrop
/etc/hostname enthält normalerweise nicht den FQDN auf Debian-Systemen, sondern nur den kurzen Hostnamen. - Josip Rodin


Wenn Sie eine einzelne Konfigurationsdatei verwenden, setzen Sie die Variable PRIMARY_HOST_NAME auf den gewünschten Namen:

Zum Beispiel in /etc/exim4/exim4.conf:

PRIMARY_HOST_NAME = mybox.mydomain.com

oder einstellen MAIN_HARDCODE_PRIMARY_HOSTNAME in update-exim4.conf.conf, wenn Sie die Konfiguration der geteilten Datei verwenden.

Um sicher zu gehen, starte exim neu.


7
2017-07-27 16:56



Nur ein Hinweis, dass der Host nicht in Anführungszeichen stehen darf, sonst sendet exim HELO 'mybox.mydomain.com' was das Senden von E-Mail an Google, vielleicht andere bricht. - mkomarinski
Ich kann diesen Variablennamen "PRIMARY_HOST_NAME" in der Dokumentation nicht finden. Wo hast du das gefunden? - Josip Rodin


Der primäre Hostname wird während der Installation von exim4 angefordert. Sie können den Befehl ausführen

sudo dpkg-reconfigure exim4-config

um die Eingabeaufforderungen erneut zu durchlaufen.

Soweit ich weiß, wenn Sie bereits die "Split-Konfiguration" verwenden (viele kleine Dateien unter /etc/exim4/conf.d) und bei Bedarf dazu bleiben, sollte dpkg-reconfigure keines davon überschreiben Ihre bestehenden Konfigurationsänderungen außer den Einstellungen, zu denen Sie aufgefordert werden, aber wie immer sollten Sie zuerst ein Backup machen, um sicher zu sein.


4
2017-07-27 16:00



Es scheint nur nach einem "Mail-Namen [welcher] der einzige vollqualifizierte Domain-Name (FQDN) sein sollte" zu fragen. Diese Einstellung ist jedoch bereits korrekt und der HELO scheint immer noch "localhost" zu sagen. - Jørn Schou-Rode


nach dem Hinzufügen der gleichen Zeichenfolge in / etc / hosts, Hostname -f gibt Ihren FQDN zurück


1
2017-12-12 11:02





Ich habe das gleiche Problem. Ich muss den Mail-Hostnamen ändern, weil einige E-Mails fehlschlagen, wenn sie gesendet wurden. Mit diesem Fehler:

host receiver.server.com [200.200.200.200]: 550 <info@sender.server.com>: Sender address rejected: Domain not found

Also ändere ich es in die /etc/exim.config der Param primärer_hostname

Ein wenig Code dieser Datei:

smtp_connect_backlog = 50
smtp_accept_max = 100

#primary_hostname = myhostname.com 
deliver_queue_load_max = 3

0
2018-02-15 13:53



Hah, dieser Post hilft mir mit "primary_hostname" und jetzt funktioniert mein Exim besser denn je :)


in WHM zum Exim Configuration Manager -> Erweiterter Editor

Scrollen Sie nach unten, bis Sie "Zusätzliche Konfigurationseinstellungen hinzufügen" (eine große blaue Schaltfläche) finden und klicken Sie darauf.

in der neuen Zeile hinzufügen [primärer_hostname] = [mydomain.com]

Scrollen Sie nach unten und klicken Sie auf Speichern.


0
2018-03-23 15:40





Das primary_hostname Die Variable wird entsprechend dem vollqualifizierten Domänennamen (FQDN) des Systems gefüllt. Auf Debian und verwandten Systemen wird dies typischerweise unter Verwendung des Inhalts des /etc/hostname und /etc/hosts Dateien. Die Hostname-Datei sollte den kurzen Hostnamen (z.B. foo), und die hosts-Datei sollte einen Eintrag enthalten, der auflöst foo in foo.bar.baz, d. h. Hostname mit seinem Domänensuffix (entspricht normalerweise einem DNS-Eintrag).

Die Ausgabe von dem Befehl hostname (ohne irgendwelche Parameter) wird die erstere und die zurückgeben hostname -f Ausgabe wird die letztere zurückgeben.

Die Hostname-Datei wird normalerweise bei der Installation gefüllt, und die hosts-Datei kann so bearbeitet werden, dass neben den Standard-localhost-Datensätzen noch ein weiterer Datensatz darin enthalten ist - sie sollte das folgende Format haben:

<IP address> <hostname FQDN> <hostname>

Die drei Spalten sollten durch Leerzeichen oder Tabulatoren getrennt sein, es spielt keine Rolle. Die IP-Adresse kann wie localhost 127.0.0.1 sein, aber der Hostname-Teil muss mit dem System-Hostnamen übereinstimmen, und der mittlere Teil sollte der FQDN sein, d. H. Hostname mit einem Domänensuffix.

Um zu überprüfen, ob die Leitung funktioniert, führen Sie sie einfach aus hostname -f Überprüfen Sie, ob der FQDN des Servers zurückgegeben wird.

Schließlich starten Sie Exim neu, z. mit:

sudo service exim4 restart

Danach solltest du HELO richtig sehen. Seine Variable kann überprüft werden, indem Sie Folgendes ausführen:

/usr/sbin/exim4 -bP primary_hostname

(NB: Ich habe dies ursprünglich als eine Bearbeitung der Antwort von 2009 getan, aber es wurde abgelehnt. Die Dinge, die ich ursprünglich behoben habe, waren: es war nicht notwendig, den Standard-Localhost-Datensatz zu wiederholen, einfach erklären, was der Zusatz sein sollte; IP-Adresse kann verwendet werden, erklären, was ist FQDN, erklären, wie Exim selbst zu überprüfen.


0
2017-12-26 12:22