ubuntuusers.de

Postfix braucht restart nach reboot...?

Status: Ungelöst | Ubuntu-Version: Server 18.04 (Bionic Beaver)
Antworten |

spaceduck

Anmeldungsdatum:
4. Juli 2020

Beiträge: 6

Hallo, ich habe ein kleines Problem mit Postfix bei dem ich nicht weiterkomme... Wenn ich meinen Server reboote, dann startet Postfix nicht

● postfix.service               loaded active exited   Postfix Mail Transport Agent
● postfix@-.service             loaded failed failed   Postfix Mail Transport Agent (instance -)

Mailserver geht nicht, soweit klar... ein "systemctl restart postfix.service" in der Shell, der Postfix Dienst startet fehlerfrei und alles funktioniert.

postfix.service                 loaded active exited    Postfix Mail Transport Agent  
postfix@-.service               loaded active running   Postfix Mail Transport Agent (instance -)

im syslog findet sich nur ein Eintrag:

postfix@.service: Start operation timed out. Terminating

Hat wer eine Idee wo ich bei der Fehlersuche ansetzen kann?

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5507

Zeige bitte einmal die Ausgabe von systemctl status postfix, am besten nach einem reboot.

spaceduck

(Themenstarter)

Anmeldungsdatum:
4. Juli 2020

Beiträge: 6

systemctl status postfix

● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
   Active: active (exited) since Sat 2020-07-04 23:10:18 CEST; 1min 8s ago
  Process: 3774 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 3774 (code=exited, status=0/SUCCESS)

Jul 04 23:10:15 Attila-2 systemd[1]: Starting Postfix Mail Transport Agent...
Jul 04 23:10:18 Attila-2 systemd[1]: Started Postfix Mail Transport Agent.

systemctl status postfix@-.service

● postfix@-.service - Postfix Mail Transport Agent (instance -)
   Loaded: loaded (/lib/systemd/system/postfix@.service; indirect; vendor preset: enabled)
   Active: failed (Result: timeout) since Sat 2020-07-04 23:10:14 CEST; 3min 45s ago
     Docs: man:postfix(1)
  Process: 1792 ExecStartPre=/usr/lib/postfix/configure-instance.sh - (code=killed, signal=TERM)

Jul 04 23:08:40 Attila-2 systemd[1]: Starting Postfix Mail Transport Agent (instance -)...
Jul 04 23:10:10 Attila-2 systemd[1]: postfix@-.service: Start-pre operation timed out. Terminating.
Jul 04 23:10:14 Attila-2 systemd[1]: postfix@-.service: Failed with result 'timeout'.
Jul 04 23:10:14 Attila-2 systemd[1]: Failed to start Postfix Mail Transport Agent (instance -).

Mir ist noch nie bewusst aufgefallen das es da postfix und die Instanz postfix@- gibt... Keine Ahnung ob das schon immer so war.

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5507

spaceduck schrieb:

systemctl status postfix@-.service

● postfix@-.service - Postfix Mail Transport Agent (instance -)
   Loaded: loaded (/lib/systemd/system/postfix@.service; indirect; vendor preset: enabled)
   Active: failed (Result: timeout) since Sat 2020-07-04 23:10:14 CEST; 3min 45s ago
     Docs: man:postfix(1)
  Process: 1792 ExecStartPre=/usr/lib/postfix/configure-instance.sh - (code=killed, signal=TERM)

Jul 04 23:08:40 Attila-2 systemd[1]: Starting Postfix Mail Transport Agent (instance -)...
Jul 04 23:10:10 Attila-2 systemd[1]: postfix@-.service: Start-pre operation timed out. Terminating.
Jul 04 23:10:14 Attila-2 systemd[1]: postfix@-.service: Failed with result 'timeout'.
Jul 04 23:10:14 Attila-2 systemd[1]: Failed to start Postfix Mail Transport Agent (instance -).

Mir ist noch nie bewusst aufgefallen das es da postfix und die Instanz postfix@- gibt... Keine Ahnung ob das schon immer so war.

Das frag ich mich auch. Jedenfalls scheint das zumindest bei bionic Standard zu sein. Der status von postfix.service (active (exited)) passt, aber warum postfix@-.service failed ist mir noch nicht klar. Was zeigt denn journalctl -u postfix@-?

franc

Anmeldungsdatum:
22. Juni 2009

Beiträge: 163

spaceduck schrieb:

Hallo, ich habe ein kleines Problem mit Postfix bei dem ich nicht weiterkomme... Wenn ich meinen Server reboote, dann startet Postfix nicht

● postfix.service               loaded active exited   Postfix Mail Transport Agent
● postfix@-.service             loaded failed failed   Postfix Mail Transport Agent (instance -)

Mailserver geht nicht, soweit klar... ein "systemctl restart postfix.service" in der Shell, der Postfix Dienst startet fehlerfrei und alles funktioniert.

postfix.service                 loaded active exited    Postfix Mail Transport Agent  
postfix@-.service               loaded active running   Postfix Mail Transport Agent (instance -)

im syslog findet sich nur ein Eintrag:

postfix@.service: Start operation timed out. Terminating

Hat wer eine Idee wo ich bei der Fehlersuche ansetzen kann?

Konntest du das lösen eigentlich? Ich habe vielleicht das selbe Problem:

Postfix startet nach Reboot nicht von alleine

spaceduck

(Themenstarter)

Anmeldungsdatum:
4. Juli 2020

Beiträge: 6

Ja, konnte ich lösen. das Problem war bei mir eindeutig: Zu wenig RAM! Der Rechner war mit dem vorhanden Setup und 4GB RAM völlig am Limit. Ein Upgrade auf 16GB und alles funktionierte. Das ganze war auch reproduzierbar.

franc

Anmeldungsdatum:
22. Juni 2009

Beiträge: 163

spaceduck schrieb:

Ja, konnte ich lösen. das Problem war bei mir eindeutig: Zu wenig RAM! Der Rechner war mit dem vorhanden Setup und 4GB RAM völlig am Limit. Ein Upgrade auf 16GB und alles funktionierte. Das ganze war auch reproduzierbar.

Danke für die schnelle Antwort!!! Komisch, ich hab eigentlich 12 GB RAM:

Root-Server L SATA v6

Virtualisierungstechnik: KVM

Prozessor: Intel®Xeon® E5-26xxV3 (min. 2,3 GHz je Kern)

RAM: 12 GB DDR4

CPU-Kerne: 4 dediziert

12 müssten doch auf jeden Fall reichen. top zeigt mir im Moment:

top - 10:28:44 up  9:39,  1 user,  load average: 0,00, 0,00, 0,01
Tasks: 217 gesamt,   1 laufend, 170 schlafend,   0 gestoppt,   0 Zombie
%CPU(s):  0,3 be,  0,2 sy,  0,0 ni, 99,3 un,  0,0 wa,  0,0 hi,  0,2 si,  0,0 st
KiB Spch : 12296260 gesamt,  2856544 frei,  2391568 belegt,  7048148 Puff/Cache
KiB Swap:   975868 gesamt,   975868 frei,        0 belegt.  9544568 verfü Spch 
...

spaceduck

(Themenstarter)

Anmeldungsdatum:
4. Juli 2020

Beiträge: 6

Wenn ich mir so die load average anschaue muss das bei Dir in der Tat ein anderes Problem sein.

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 5142

Hallo,

wenn sich ein Service nach dem Neustart problemlos manuell starten lässt, dann sollte man auch immer systemd im Hinterkopf haben - Stichworte After etc..

Das merkt man dann in der Regel auch daran, dass der Server länger zum Starten oder Herunterfahren braucht oder beides zusammen.

Schau mal, ob systemd-analyze Dich diesbezüglich weiter bringt. Wenn nicht kannst Du auch einfach mal probieren postfix.serice nach etwas starten zu lassen, von dem Du Dir einigermaßen sicher bist, dass es erst ziemlich am Ende gestartet wird.

LG, Newubunti

franc

Anmeldungsdatum:
22. Juni 2009

Beiträge: 163

Newubunti schrieb:

wenn sich ein Service nach dem Neustart problemlos manuell starten lässt, dann sollte man auch immer systemd im Hinterkopf haben - Stichworte After etc..

Kann es daran liegen, dass Postfix noch von vor der Units-Zeit kommt und der Start in rc.d (mit den Runleveln und so) gemacht wird? Ich hab Postfix auf dem Server seit 8.04 laufen und ich erinnere mich nicht, dass ich jemals was an den Startskripts geändert hätte. Jedenfalls steht postfix in den runleveln /etc/rc(2-5).d und ist dort zum Starten (S07postfix) nach /etc/init.d/postfix verlinkt. Units sind doch erst ab Ubuntu 15 wenn ich es richtig gelesen habe...

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 5142

franc schrieb:

Units sind doch erst ab Ubuntu 15 wenn ich es richtig gelesen habe...

Ja, das stimmt.

Kann es daran liegen, dass Postfix noch von vor der Units-Zeit kommt und der Start in rc.d (mit den Runleveln und so) gemacht wird? Ich hab Postfix auf dem Server seit 8.04 laufen und ich erinnere mich nicht, dass ich jemals was an den Startskripts geändert hätte. Jedenfalls steht postfix in den runleveln /etc/rc(2-5).d und ist dort zum Starten (S07postfix) nach /etc/init.d/postfix verlinkt. Units sind doch erst ab Ubuntu 15 wenn ich es richtig gelesen habe...

Ich kann zu so einer Situation nichts sagen, weil ich persönlich Server-Dienste erst so richtig seit systemd nutze bzw. weil ich bei mir konsequent auf systemd umgestellt habe.

Bei Deinem System stellt sich für mich die Frage, ob da wirklich vollständig alles noch unter init.d läuft oder ob und was da inzwischen eventuell auch auf systemd läuft?

Das Symptom an sich würde ich aber auf alle Fälle am ehesten darauf zurückführen, dass postfix hier während des Systemstarts zu einem Zeitpunkt zu starten versucht, zu welchem ein dafür vorausgesetzter Dienst noch fehlt.

Wie Du das jetzt in Deinem Fall genau analysierst, da bin ich aber wie gesagt raus. Da müssen sich ältere Server-Hasen hier äußern, die so ein Upgrade-zu-Uprgrade über zig Jahre über den Wechsel von init.d zu systemd schon bewerkstelligt haben und die init.d beherrschen.

Problem beim Upgrade generell ist halt auch immer, dass Umstellungen für die Komponenten, die zur Standard-Installation gehören relative problemfrei auf etwas neues gehoben werden. Für selbst nachinstallierte Dienste muss man dann häufig noch etwas nachhelfen

Hiermit kannst Du erst mal prüfen, ob bei Dir systemd überhaupt läuft:

pidof systemd && echo "systemd" || echo "kein systemd"

systemd kann ja dann init.d-Kram starten und ich könnte mir vorstellen, dass das bei Dir der Fall ist.

Wenn bei Dir systemd laufen sollte, dann könntest Du postfix aus init.d herausnehmen und dafür unter systemd "anlegen". Die dafür notwendigen unit Dateien liegen bei Dir eventuell schon vor und sind halt im Zweifel nicht aktiviert.

Was gibt denn

systemctl list-unit-files --type=service

bei Dir aus? (falls systemd aktiv ist)

LG, Newubunti

franc

Anmeldungsdatum:
22. Juni 2009

Beiträge: 163

systemd lauft!

[17.50.37][root@ew6:/etc#systemctl list-unit-files --type=service | grep post
postfix.service                        enabled        
postfix@.service                       indirect       
postfwd.service                        generated      
postgrey.service                       generated   

Ich hab mich halt nie richtig mit systemd und init.d und die ganzen Startskripte auseinandergesetzt. Ist wohl jetzt der Moment ☺

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 5142

Ok, lass Dir mal

systemctl status postfix.service

anzeigen.

In dieser Ausgabe sollte es eine Zeile geben, die mit Loaded: loaded ( beginnt. In der Klammer steht dann der Pfad zur Unit-Datei von postfix auf Deinem System. Den Inhalt der Unit-Datei bitte auch hier posten.

Poste dann mal bitte noch die Ausgabe von

systemd-analyze critical-chain

Ja, mit systemd solltest Du Dich unbedingt auseinandersetzen. Ist vielleicht am Anfang ein bisschen viel und scheinbar unübersichtlich, ich finde aber dass das systemd konzeptionell sehr gut durchdacht und zudem auch schon in den manpages überdurchschnittlich gut dokumentiert ist.

Am Anfang schockt vielleicht erst mal die Informationsfülle, aber IMO ist es nicht schwer zu verstehen.

LG, Newubunti

franc

Anmeldungsdatum:
22. Juni 2009

Beiträge: 163

#systemctl status postfix.service
● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2021-11-17 08:20:27 CET; 12h ago
 Main PID: 31192 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/postfix.service

Nov 17 08:20:27 ew6.org systemd[1]: Starting Postfix Mail Transport Agent...
Nov 17 08:20:27 ew6.org systemd[1]: Started Postfix Mail Transport Agent.

und:

#cat /lib/systemd/system/postfix.service
[Unit]
Description=Postfix Mail Transport Agent
Conflicts=sendmail.service exim4.service
ConditionPathExists=/etc/postfix/main.cf

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecReload=/bin/true

[Install]
WantedBy=multi-user.target

dann:

#systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.

graphical.target @9min 28.182s
└─multi-user.target @9min 28.182s
  └─webmin.service @8min 8.017s +1min 20.164s
    └─denyhosts.service @7min 56.971s +11.041s
      └─amavis.service @3min 10.154s +4min 46.813s
        └─remote-fs.target @3min 10.149s
          └─mnt-storagespace.mount @3min 3.475s +6.672s
            └─network-online.target @3min 2.318s
              └─network.target @3min 2.002s
                └─networking.service @1min 33.181s +1min 28.819s
                  └─apparmor.service @50.594s +41.840s
                    └─local-fs.target @50.249s
                      └─local-fs-pre.target @50.249s
                        └─keyboard-setup.service @33.538s +16.708s
                          └─systemd-journald.socket @33.185s
                            └─system.slice @33.178s
                              └─-.slice @32.810s

Da sehe ich aber gar keine postfix-Unit. Ich lese mir als nächstes mal die Manpage von systemd durch...

Vielen Dank!

Newubunti

Anmeldungsdatum:
16. Februar 2008

Beiträge: 5142

Gibt es bei Dir eine /lib/systemd/system/postfix@.service?

Die müsste so aussehen:

[Unit]
Description=Postfix Mail Transport Agent (instance %i)
Documentation=man:postfix(1)
PartOf=postfix.service
Before=postfix.service
ReloadPropagatedFrom=postfix.service
After=network-online.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
GuessMainPID=no
ExecStartPre=/usr/lib/postfix/configure-instance.sh %i
ExecStart=/usr/sbin/postmulti -i %i -p start
ExecStop=/usr/sbin/postmulti -i %i -p stop
ExecReload=/usr/sbin/postmulti -i %i -p reload

[Install]
WantedBy=multi-user.target

Ändere die mal versuchsweise wie folgt ab - mache Dir am besten zuvor ein Backup von der Datei:

[Unit]
Description=Postfix Mail Transport Agent (instance %i)
Documentation=man:postfix(1)
PartOf=postfix.service
Before=postfix.service
ReloadPropagatedFrom=postfix.service
#After=network-online.target nss-lookup.target
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
GuessMainPID=no
ExecStartPre=/usr/lib/postfix/configure-instance.sh %i
ExecStart=/usr/sbin/postmulti -i %i -p start
ExecStop=/usr/sbin/postmulti -i %i -p stop
ExecReload=/usr/sbin/postmulti -i %i -p reload

[Install]
WantedBy=multi-user.target

LG, Newubunti

Antworten |