[Postfixbuch-users] Postfix main.cf myhostname-Variable

Stefan Förster cite+postfix-buch at incertum.net
Mi Dez 9 19:36:42 CET 2009


Hallo Kai,

* Kai Fürstenberg <kai_postfix at fuerstenberg.ws>:
> Basti schrieb am 09.12.2009 17:18:
>> ich fahre auch meinen eingehenden Mailgates immer die selbe main.cf,
>> diese unterscheiden sich auch nur in myhostname. Gibt es eine
>> Möglichkeit diese Variable "automatisch" zu definieren? Also z.B.
>> dass Postfix sich hier den realen Hostnamen irgendwie schnappt?
>> 
>> Hintergrund ist der, dass ich dann einfach wenn ich was ändere
>> einfach die Config mit SCP auf die anderen Server schieben
>> kann, und nicht jedesmal den Hostnamen ändern muss.
> 
> aus der Doku:
> myhostname (default: see "postconf -d" output)
> 
>     The internet hostname of this mail system. The default is to use the
> fully-qualified domain name from gethostname(). $myhostname is used as a
> default value for many other configuration parameters.

Das mit dem eigenen FQDN ist so eine Sache. Eigentlich steht
nirgendwo, daß der Name, den gethostname(2) zurückliefert,
qualifiziert sein muß - ich meine, welche Domain sollte da auch
gemeint sein? Die NIS-Domain? Die DNS-Domain? Oder gar die LL-Adresse?

Wenn man "hostname -f" bei einer /etc/hosts, die keine Zeile für den
eigenen Namen enthält, auf die Finger schaut, dann sieht man, daß er
ein gethostname(2) macht, darauf dann ein gethostbyname(2) - und das
Ergebnis davon hängt dann einzig und allein vom Resolver ab. Ebenso
der nächste Schritt, ein gethostbyaddr(2) auf die IP, die er in
Schritt zwei zurückkriegt.

Das kann jetzt im günstigsten Fall so laufen:

1. gethostname():               mail
2. gethostbyname("mail"):       10.0.0.1
3. gethostbyaddr("10.0.0.1"):   mail.example.net

Ebenso kann Schritt zwei aber "127.0.0.1" zurückliefern, z.B. bei
einer Zeile wie

127.0.0.1   localhost mail

in der /etc/hosts. In Schritt drei kommt da dann "localhost" raus.
Gehen sie nicht über "Los"...

Es ist unter Linux üblich, daß der eigene Hostname, also das Ergebnis
von gethostname(2) _nicht_ qualifiziert ist - das haben aber selbst
viele Linuxer nicht kapiert (so stand das bis zu einem Bugreport
meinerseites falsch im Gentoo-Wiki und ward dergestalt auch in deren
Init-Skripten verwurstet).

Postfix setzt dann für $mydomain "localdomain" => #fail.

Abhilfe ist ein Workaround wie postconf -e "mydomain=$(dnsdomainname)".

Oder, um Deine Frage zu beantworten: Nein, das geht nicht.


Ciao
Stefan

P.S: Ananas ftw.
-- 
Stefan Förster     http://www.incertum.net/     Public Key: 0xBBE2A9E9
FdI #197: Human Resources - Menschenmaterial (Konstantin Welke)



Mehr Informationen über die Mailingliste Postfixbuch-users