Keine Postfix Namensauflösung

Mardor

Well-Known Member
Hallo,

während mein Hostsystem ohne Probleme Mails per Postfix versendet, hat postfix in der Jail massive Probleme. Der Log zeigt mir folgendes:

Code:
Aug  7 16:38:41 xxx postfix/pickup[31010]: B5D45T51D: uid=0 from=<root>
Aug  7 16:38:41 xxx
postfix/cleanup[31066]: B5D92651D: message-id=<20160807143841.B5D45T51D@xxx.xxx.info>
Aug  7 16:38:41 xxx postfix/qmgr[31011]: B5D45T51D: from=<root@xxx.xxx.info>, size=348, nrcpt=1 (queue active)
Aug  7 16:38:41 xxx postfix/smtp[31068]: B5D45T51D: to=<mail@yyy.de>, relay=none, delay=0.07, delays=0.06/0.01/0/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=yyy.de type=MX: Host not found, try again)

Wenn in dem Jail jedoch über drill yyy.de MX den Namen auflösen möchte funktioniet dies ohne Probleme.

Nach einer Internetsuche habe ich bereits auch schon "smtp_host_lookup = native" in der main.cf eingetragen. Allerdings hat dies überhaupt nichts gebracht.

Hat jemand hierzu eine Idee ?

Gruß Mardor
 
Läuft der postfix in einem chroot? Vermutlich fehlt ihm eine korrekte resolve.conf an passender stelle.
 
Hallo mapet,

ja, Postfix läuft in einem Jail. Das ist meiner Meinung nach auch der einzige Unterschied.
Ich wüsste allerdings nicht wo ich genau bzgl. resolv.conf in Bezug auf Postfix schauen sollte, da wie gesagt sowohl die Namensauflösung über "drill" als auch über "host" funktioniert.

Gruß Mardor
 
Ein chroot ist erstmal unabhängig vom jail. Schau doch mal, ob im home Directory (muss nicht unterhalb von /home liegen) vom postfix User Verzeichnisse wie /var oder /etc liegen. In OpenBSD liegt das chroot unterhalb von /var /postfix oder so und wenn die resolve.conf da nicht passt, funktioniert keine namensauflösung.
 
Moin mardor,

schau doch mal in /var/maillog (in der Jail), ob beim Start von postfix Fehlermeldungen geschrieben werden (service restart postfix innerhalb der Jail). Kann Postfix über die in main.cf konfigurierten Ports frei kommunizieren? Sind in der master.cf Leerzeichen an der richtigen Stelle (nach Umbruch innerhalb des Kommandos ein Leerzeichen am Zeilenanfang)?

Grüßle
 
Wir betreiben hier einige Postfix-Instanzen in Jails, ohne Probleme. Ich tippe auch auf eine Fehlkonfiguration des Postfix.
Poste mal die /usr/local/etc/postfix/master.cf und main.cf

Rob
 
Hallo,

um wirklich sicher zu gehen, dass ich keinen Fehler bei der Installation gemacht habe habe ich heute das Jail nochmals gelöscht und neu erstellt.

Danach habe ich folgendes getan:

  1. Login in den Jail als root via ssh
  2. portmaster mail/postfix
  3. sysrc postfix_enable="YES
  4. sysrc sendmail_enable="NONE"
  5. mv /usr/local/etc/mail/mailer.conf /usr/local/etc/mail/mailer.conf.old
  6. install -m 0644 /usr/local/share/postfix/mailer.conf.postfix /usr/local/etc/mail/mailer.conf
  7. Disable sendmail durch hinzufügen von folgenden Zeilen in der /etc/periodic.conf(.local):
    daily_clean_hoststat_enable="NO"
    daily_status_mail_rejects_enable="NO"
    daily_status_include_submit_mailq="NO"
    daily_submit_queuerun="NO"
  8. Ändern von /etc/mail/aliases für root auf "root: root,<externe mailadresse in die meine system logs laufen>
  9. Ausführen von newaliases
Sonst habe ich keine Änderungen vorgenommen, dies genügt bei meinen anderen Systemen inkl. dem Hostsystem immer um Mails zu versenden.
Ich habe weder die master.cf noch die main.cf verändert. Dies hätte ich auch noch nie bei einem meiner anderen Systeme getan, da dieses Postfix simple einfach nur die Daily logs und logs der Skripte versenden soll.

Kann Postfix über die in main.cf konfigurierten Ports frei kommunizieren?
Ja, die ausgehende Firewall sagt folgendes:
Code:
nat pass on re0 from 10.1.1.1/32 to any -> <host public ip>

Gruß Mardor
 
Auch wenn das dein Problem an sich nicht löst, wenn du du nur Mails von System versenden willst ist Postfix schon fast überdimensioniert. Da du eh nen Mailhost hast würde ich zu ssmtp greifen.
 
Bei den Punkten oben von 1 bis 9 fehlt das kopieren der /etc/resolv.conf vom Host in die Jail!
 
Auch wenn das dein Problem an sich nicht löst, wenn du du nur Mails von System versenden willst ist Postfix schon fast überdimensioniert. Da du eh nen Mailhost hast würde ich zu ssmtp greifen.
Der Dragonfly Mail Agent (dma) ist doch in 10.3 schon im Basissytem und lässt sich mit 3 Zeilen Config als Transportmittel zum Smarthost einrichten.
 
Bei den Punkten oben von 1 bis 9 fehlt das kopieren der /etc/resolv.conf vom Host in die Jail!

Da ich die Installation des Jail über "bsdinstall" durchgeführt habe ist die /etc/resov.conf im Jail und im Host identisch:

Code:
# Generated by resolvconf
search <meine domain.tld>
nameserver 213.133.98.98
nameserver 213.133.99.99
nameserver 213.133.100.100

Auch "drill" zeigt mir bei der Suche nach dem richtigen MX Record das korrekte Ergebnis.

Gruß Mardor
 
Hallo KobRhe Tilla,

anbei der Output.

Code:
root@abc:~ # procstat -f 74134
  PID COMM               FD T V FLAGS     REF  OFFSET PRO NAME
74134 smtp              text v r r-------  -       - -   /usr/local/libexec/postfix/smtp
74134 smtp               cwd v d r-------  -       - -   /var/spool/postfix
74134 smtp              root v d r-------  -       - -   /
74134 smtp              jail v d r-------  -       - -   /
74134 smtp                 0 v c rw------ 12       0 -   /dev/null
74134 smtp                 1 v c rw------  7       0 -   /dev/null
74134 smtp                 2 v c rw------  7       0 -   /dev/null
74134 smtp                 3 p - rw---n--  7       0 -   -
74134 smtp                 4 p - rw---n--  7       0 -   -
74134 smtp                 5 p - rw------  3       0 -   -
74134 smtp                 6 s - rw---n--  3       0 UDS private/smtp
74134 smtp                 7 s - rw------  1       0 UDD /var/run/logpriv
74134 smtp                 8 v r rw-----l  1       0 -   /var/spool/postfix/pid/unix.smtp
74134 smtp                 9 k - rw------  2       0 -   -
74134 smtp                10 p - rw---n--  2       0 -   -
74134 smtp                11 p - rw---n--  1       0 -   -
74134 smtp                91 p - rw---n--  7       0 -   -

Gruß Mardor
 
Zumindest sieht man daraus, dass Postfix, bzw. der smtp-Prozess nicht in einem chroot läuft. Also sollte er auch die /etc/resolv.conf des Jails nutzen.
Nochmal zur Sicherheit, wie ist im Jail die Ausgabe von:
Code:
$ host -tmx <zieldomain> 213.133.98.98

Rob
 
Hallo,

folgende Ausgabe konnte ich sehen:

Code:
 host -tmx abc.de 213.133.98.98
Using domain server:
Name: 213.133.98.98
Address: 213.133.98.98#53
Aliases:

abc.de mail is handled by 20 mx1.jpberlin.de.
abc.de mail is handled by 10 mx0.jpberlin.de.
 
Um es vorweg zu nehmen: wenn dort inet_protocols=all angezeigt wird, versuche mal in /usr/local/etc/postfix/main.cf
Code:
inet_protocols=ipv4
zu setzen. Dann musst du Postfix neu starten (reload reicht nicht).

Rob
 
Hallo Rob,

da läuft kein einziges Packet. Kein DNS Request.
Ich hatte den PCAP auch schon ganz zum Anfang meiner Analyse/Problembehebung mit dem gleichen Resultat gestartet.

Folgenden Filter habe ich auf dem Hostsystem laufen lassen.

Code:
tcpdump -i re0 -vn -XX udp port 53 or tcp port 53 or tcp port 25
tcpdump: listening on re0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C
0 packets captured
57 packets received by filter
0 packets dropped by kernel

Gruß Mardor
 
Dann hilft es eventuell mal den Prozess zu tracen.

  • in der master.cf die Anzahl der Prozesse für smtp (unix, nicht der smtpd) von "-" auf "1" setzen (vorletzte Spalte)
  • Postfix neu starten
  • mittels
    Code:
    # ktrace -t ci -p <pid des smtp prozesses>
    das tracing aktivieren
  • Mailversand anstoßen (warten bis Fehler im Logfile ersichtlich)
  • mittels
    Code:
    # ktrace -C
    das tracing wieder deaktivieren

Mittels kdump kannst du dir dann ansehen, welche systemcalls und i/o-operationen gemacht wurden und evtl. fehlgeschlagen sind.

Rob
 
Hallo Rob,

Punkt 1 und 2 habe ich ausgeführt. Dann wollte ich die PID für den ktrace finden, aber der smtp prozess ist nicht sichtbar

Code:
ps aux
USER      PID %CPU %MEM   VSZ  RSS TT  STAT STARTED    TIME COMMAND
root    15993  0.1  0.1 69296 8816  -  SsJ   8:51PM 0:00.01 /usr/local/libexec/postfix/master -w
postfix 15994  0.1  0.1 71356 8728  -  SJ    8:51PM 0:00.01 pickup -l -t unix -u
postfix 15995  0.1  0.1 71408 8780  -  SJ    8:51PM 0:00.01 qmgr -l -t unix -u
root    67974  0.0  0.0 14520 1960  -  SsJ  10:07PM 0:00.11 /usr/sbin/syslogd -ss
root    68045  0.0  0.0 61316 6412  -  IsJ  10:07PM 0:00.00 /usr/sbin/sshd
root    68055  0.0  0.0 16624 2156  -  IsJ  10:07PM 0:00.13 /usr/sbin/cron -s
root    16021  0.0  0.0 18768 2176  6  R+J   8:51PM 0:00.00 ps aux
root    98806  0.0  0.0 47756 2644  6  IJ   10:22PM 0:00.00 login [pam] (login)
root    98807  0.0  0.0 23600 3716  6  SJ   10:22PM 0:00.05 -csh (csh)
root    65771  0.0  0.0 47756 2644  9  IJ    8:22PM 0:00.00 login [pam] (login)
root    65772  0.0  0.0 23600 3352  9  IJ    8:22PM 0:00.01 -tcsh (tcsh)
root    70463  0.0  0.0 12368 1912  9  S+J   8:35PM 0:00.05 xtail /var/log/auth.log /var/log/bsdinstall_log /var/log/cron /var/l

Kann das Problem daran liegen ?

Noch als kurze Zusatzinformation: Im gleichen Jail funktioniert ssmtp ohne Probleme (zumindest kein DNS Problem).

Gruß Mardor
 
Nabend,

In der master.cf bitte unbedingt auf die korrekte Schreibweise achten, besonders auf die Leerzeichen und Minuszeichen! Sonst läuft da nix.
Grüßle
 
Hallo,

ich bekomme trotzdem keinen Output im ktrace

Code:
root@abc:~ # echo "ok" | mail -s test mail@<meine-mailadresse>.de
root@abc:~ # ps aux | grep smtp
postfix 73619  0.0  0.1 75676 9092  -  SJ    8:37PM 0:00.01 smtp -l -t unix -u
root    73631  0.0  0.0 18832 2236  7  S+J   8:37PM 0:00.00 grep smtp
root@abc:~ # ktrace -t ci -p 73619
root@abc:~ # echo "ok" | mail -s test mail@<meine-mailadresse>.de
root@abc:~ # ktrace -C
ktrace: ktrace.out: No such process

Hier auch noch meine master.cf

Code:
root@abc:~ # cat -e /usr/local/etc/postfix/master.cf
...
smtp      inet  n       -       n       -       -       smtpd$
...
pickup    unix  n       -       n       60      1       pickup$
cleanup   unix  n       -       n       -       0       cleanup$
qmgr      unix  n       -       n       300     1       qmgr$
#qmgr     unix  n       -       n       300     1       oqmgr$
tlsmgr    unix  -       -       n       1000?   1       tlsmgr$
rewrite   unix  -       -       n       -       -       trivial-rewrite$
bounce    unix  -       -       n       -       0       bounce$
defer     unix  -       -       n       -       0       bounce$
trace     unix  -       -       n       -       0       bounce$
verify    unix  -       -       n       -       1       verify$
flush     unix  n       -       n       1000?   0       flush$
proxymap  unix  -       -       n       -       -       proxymap$
proxywrite unix -       -       n       -       1       proxymap$
smtp      unix  -       -       n       -       1       smtp$
relay     unix  -       -       n       -       -       smtp$

Vielleicht kann man hieraus irgendetwas erkennen.

Gruß Mardor
 
Zurück
Oben