# mail-mta/postfix-2.10.0 lässt sich nicht mehr starten

## tazinblack

Hallo zusammen,

hab hier ein Problem mit postfix.

Wenn ich versuche postfix zu starten schlägt das ohne genauen Fehler fehl.

Im Maillog steht nur das: 

```
May 28 07:42:13 li20x90x113 postfix/postfix-script[5649]: starting the Postfix mail system

May 28 07:43:53 li20x90x113 postfix/master[5651]: fatal: daemon initialization failure

May 28 07:43:54 li20x90x113 postfix/postfix-script[5658]: fatal: mail system startup failed
```

Wenn ich ihn von Hand starten genau so viele Infos:

```
postfix -v start

postfix: name_mask: ipv4

postfix: name_mask: subnet

postfix: inet_addr_local: configured 2 IPv4 addresses

postfix: been_here: 127.0.0.0/8: 0

postfix: been_here: 172.20.90.0/24: 0

postfix: mynetworks: 127.0.0.0/8 172.20.90.0/24 

postfix/postfix-script: starting the Postfix mail system

postfix/postfix-script: fatal: mail system startup failed

```

die Konfig ist recht überschaubar:

```
queue_directory = /var/spool/postfix

command_directory = /usr/sbin

daemon_directory = /usr/libexec/postfix

data_directory = /var/lib/postfix

mail_owner = postfix

unknown_local_recipient_reject_code = 550

debug_peer_level = 2

debugger_command =

         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin

         ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail

newaliases_path = /usr/bin/newaliases

mailq_path = /usr/bin/mailq

setgid_group = postdrop

html_directory = no

manpage_directory = /usr/share/man

sample_directory = /etc/postfix

readme_directory = no

inet_protocols = ipv4

myhostname = li20x90x113

mydomain = <meine domain>

myorigin = $myhostname.$mydomain

inet_interfaces = all

masquerade_domains = <domain>

mydestination = $myhostname, localhost.$mydomain, localhost, $myhostname.$mydomain

disable_dns_lookups = yes

relayhost = [172.20.90.252]

```

Die master.cf ist eigentlich im original Auslieferungszustand:

```
#

# Postfix master process configuration file.  For details on the format

# of the file, see the master(5) manual page (command: "man 5 master").

#

# Do not forget to execute "postfix reload" after editing this file.

#

# ==========================================================================

# service type  private unpriv  chroot  wakeup  maxproc command + args

#               (yes)   (yes)   (yes)   (never) (100)

# ==========================================================================

smtp      inet  n       -       n       -       -       smtpd

#smtp      inet  n       -       n       -       1       postscreen

#smtpd     pass  -       -       n       -       -       smtpd

#dnsblog   unix  -       -       n       -       0       dnsblog

#tlsproxy  unix  -       -       n       -       0       tlsproxy

#submission inet n       -       n       -       -       smtpd

#  -o syslog_name=postfix/submission

#  -o smtpd_tls_security_level=encrypt

#  -o smtpd_sasl_auth_enable=yes

#  -o smtpd_reject_unlisted_recipient=no

#  -o smtpd_client_restrictions=$mua_client_restrictions

#  -o smtpd_helo_restrictions=$mua_helo_restrictions

#  -o smtpd_sender_restrictions=$mua_sender_restrictions

#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

#  -o milter_macro_daemon_name=ORIGINATING

#smtps     inet  n       -       n       -       -       smtpd

#  -o syslog_name=postfix/smtps

#  -o smtpd_tls_wrappermode=yes

#  -o smtpd_sasl_auth_enable=yes

#  -o smtpd_reject_unlisted_recipient=no

#  -o smtpd_client_restrictions=$mua_client_restrictions

#  -o smtpd_helo_restrictions=$mua_helo_restrictions

#  -o smtpd_sender_restrictions=$mua_sender_restrictions

#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

#  -o milter_macro_daemon_name=ORIGINATING

#628       inet  n       -       n       -       -       qmqpd

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       -       -       smtp

relay     unix  -       -       n       -       -       smtp

#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5

showq     unix  n       -       n       -       -       showq

error     unix  -       -       n       -       -       error

retry     unix  -       -       n       -       -       error

discard   unix  -       -       n       -       -       discard

local     unix  -       n       n       -       -       local

virtual   unix  -       n       n       -       -       virtual

lmtp      unix  -       -       n       -       -       lmtp

anvil     unix  -       -       n       -       1       anvil

scache    unix  -       -       n       -       1       scache

#

# ====================================================================

# Interfaces to non-Postfix software. Be sure to examine the manual

# pages of the non-Postfix software to find out what options it wants.

#

# Many of the following services use the Postfix pipe(8) delivery

# agent.  See the pipe(8) man page for information about ${recipient}

# and other message envelope options.

# ====================================================================

#

# maildrop. See the Postfix MAILDROP_README file for details.

# Also specify in main.cf: maildrop_destination_recipient_limit=1

#

#maildrop  unix  -       n       n       -       -       pipe

#  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}

#

# ====================================================================

#

# Recent Cyrus versions can use the existing "lmtp" master.cf entry.

#

# Specify in cyrus.conf:

#   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4

#

# Specify in main.cf one or more of the following:

#  mailbox_transport = lmtp:inet:localhost

#  virtual_transport = lmtp:inet:localhost

#

# ====================================================================

#

# Cyrus 2.1.5 (Amos Gouaux)

# Also specify in main.cf: cyrus_destination_recipient_limit=1

#

#cyrus     unix  -       n       n       -       -       pipe

#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}

#

# ====================================================================

#

# Old example of delivery via Cyrus.

#

#old-cyrus unix  -       n       n       -       -       pipe

#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}

#

# ====================================================================

#

# See the Postfix UUCP_README file for configuration details.

#

#uucp      unix  -       n       n       -       -       pipe

#  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)

#

# ====================================================================

#

# Other external delivery methods.

#

#ifmail    unix  -       n       n       -       -       pipe

#  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)

#

#bsmtp     unix  -       n       n       -       -       pipe

#  flags=Fq. user=bsmtp argv=/usr/sbin/bsmtp -f $sender $nexthop $recipient

#

#scalemail-backend unix -       n       n       -       2       pipe

#  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store

#  ${nexthop} ${user} ${extension}

#

#mailman   unix  -       n       n       -       -       pipe

#  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py

#  ${nexthop} ${user}

```

Führe ich postfix check aus, kommt auch keine Fehlermeldung und ich bekomme gleich den prompt zurück.

Wenn ich mit ldd die Abhängigkeiten in /usr/libexec/postfix anschaue fehlt auch nirgends was. 

Beim Starten läuft der master Prozess ca. 30s bis 1m auf CPU 100%, dann kommt die Fehlermeldung.

Irgendwie komme ich hier nicht weiter.

Hat da jemand nen Tipp?

----------

## tazinblack

... wenn ich mit etc-update die mitgelieferte Konfig verwende, startet er mit den selben Symptomen auch nicht  :Sad: 

----------

## py-ro

Gib mal nen 

```
postconf -n
```

----------

## tazinblack

gerne:

```
postconf -n

command_directory = /usr/sbin

config_directory = /etc/postfix

daemon_directory = /usr/libexec/postfix

data_directory = /var/lib/postfix

debug_peer_level = 2

debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5

disable_dns_lookups = yes

html_directory = no

inet_interfaces = all

inet_protocols = ipv4

mail_owner = postfix

mailq_path = /usr/bin/mailq

manpage_directory = /usr/share/man

masquerade_domains = <domain>

mydestination = $myhostname, localhost.$mydomain, localhost, $myhostname.$mydomain

mydomain = <meine_domain>

myhostname = li20x90x113

myorigin = $myhostname.$mydomain

newaliases_path = /usr/bin/newaliases

queue_directory = /var/spool/postfix

readme_directory = no

relayhost = [172.20.90.252]

sample_directory = /etc/postfix

sendmail_path = /usr/sbin/sendmail

setgid_group = postdrop

unknown_local_recipient_reject_code = 550
```

----------

## forrestfunk81

Hast du smtpd_relay_restrictions in der main.cf? Das ist neu. Ich hatte auch Probleme beim Update auf 2.10. Weiß aber nicht mehr, ob Postfix gar nicht mehr startete oder nur Relay verweigerte.

----------

## cryptosteve

Und auf jeden Fall mal den Debuglevel erhöhen, da das oft nochmal zusätzliche Informationen auswürfelt.

google schmiss das als Treffer raus http://kmaiti.blogspot.de/2011/06/how-to-enable-debugging-log-level-in.html und http://www.synology-wiki.de/index.php/Fehlersuche_in_der_Mailstation#Postfix

Ich habe das lange nicht mehr gemacht, aber ich erinnere mich daran, das "-v" in master.cf postfix echt mächtig gesprächig machte. 

Viel Erfolg.

----------

## tazinblack

 *forrestfunk81 wrote:*   

> Hast du smtpd_relay_restrictions in der main.cf? Das ist neu. Ich hatte auch Probleme beim Update auf 2.10. Weiß aber nicht mehr, ob Postfix gar nicht mehr startete oder nur Relay verweigerte.

 

Hab ich jetzt diverses mit smtpd_relay_restrictions probiert, ändert aber nix. 

Startet immer noch nicht.

Trotzdem danke für den Hinweis!

----------

## tazinblack

 *cryptosteve wrote:*   

> Und auf jeden Fall mal den Debuglevel erhöhen, da das oft nochmal zusätzliche Informationen auswürfelt.
> 
> google schmiss das als Treffer raus http://kmaiti.blogspot.de/2011/06/how-to-enable-debugging-log-level-in.html und http://www.synology-wiki.de/index.php/Fehlersuche_in_der_Mailstation#Postfix
> 
> Ich habe das lange nicht mehr gemacht, aber ich erinnere mich daran, das "-v" in master.cf postfix echt mächtig gesprächig machte. 
> ...

 

Danke super Tipp. Postfix -v start hatte ich bereits versucht, aber in der master.cf, auf die Idee wäre ich nicht gekommen.

Versuche ich und melde mich dann...

----------

## tazinblack

 *cryptosteve wrote:*   

> Und auf jeden Fall mal den Debuglevel erhöhen, da das oft nochmal zusätzliche Informationen auswürfelt.
> 
> google schmiss das als Treffer raus http://kmaiti.blogspot.de/2011/06/how-to-enable-debugging-log-level-in.html und http://www.synology-wiki.de/index.php/Fehlersuche_in_der_Mailstation#Postfix
> 
> Ich habe das lange nicht mehr gemacht, aber ich erinnere mich daran, das "-v" in master.cf postfix echt mächtig gesprächig machte. 
> ...

 

Hat leider auch nichts gebracht. Ich bekomme nach wie vor beim Starten nur

```
Jun  3 10:12:44 li20x90x113 postfix[8193]: name_mask: ipv4

Jun  3 10:12:44 li20x90x113 postfix[8193]: inet_addr_local: configured 2 IPv4 addresses

Jun  3 10:12:45 li20x90x113 postfix/postfix-script[8262]: starting the Postfix mail system

Jun  3 10:14:25 li20x90x113 postfix/master[8263]: fatal: daemon initialization failure

Jun  3 10:14:26 li20x90x113 postfix/postfix-script[8279]: fatal: mail system startup failed

```

und nichts genaueres  :Sad: 

Ist wohl doch etwas hartnäckiger.

Weitere Ideen?

----------

## cryptosteve

Das ist ja an sich schonmal total ärgerlich. Als nächstes fiele mir ein, mal mit einer ganz simplen Standardkonfiguration zu starten. So kann man schonmal ermessen, ob das Problem irgendwo in der Konfiguration oder ggf. außerhalb liegt. 

Ob Du hier mit strace weiterkommst, kann ich nicht so genau sagen, wäre zur Not aber auch einen Versuch wert. Und vielleicht auch die Postfix-Files nochmal neu generieren (Stichwort: postmap, postalias).

Aber das ist ohne weitere Informationen jetzt echt auch nur Gestochere im Dunkeln ...

----------

## tazinblack

 *cryptosteve wrote:*   

> Das ist ja an sich schonmal total ärgerlich. Als nächstes fiele mir ein, mal mit einer ganz simplen Standardkonfiguration zu starten. So kann man schonmal ermessen, ob das Problem irgendwo in der Konfiguration oder ggf. außerhalb liegt. 
> 
> Ob Du hier mit strace weiterkommst, kann ich nicht so genau sagen, wäre zur Not aber auch einen Versuch wert. Und vielleicht auch die Postfix-Files nochmal neu generieren (Stichwort: postmap, postalias).
> 
> Aber das ist ohne weitere Informationen jetzt echt auch nur Gestochere im Dunkeln ...

 

Mit originalen main.cf und master.cf hab ich das schon probiert. Die Aliasse wäre noch ne Idee. Das versuch ich gleich morgen früh.

Auch ein Downgrade auf die Vorgängerversion hat nichts gebracht. Muss wohl doch irgendwo in der Konfig oder an irgendwelchen Ordnerrechten liegen.

Was hättest Du den gern noch für "weitere Informationen"?

----------

## cryptosteve

 *tazinblack wrote:*   

> Was hättest Du den gern noch für "weitere Informationen"?

 

Ich weiss es ehrlich gesagt gar nicht so richtig. Eigentlich sollte postfix ja einen vernünftigen Fehler werfen und nicht einfach den Seitenausgang benutzen  :Sad: 

----------

## tazinblack

...wird immer besser:

Ich hab jetzt postfix komplett deinstalliert, /etc/postfix umbenannt, /var/spool/postfix umbenannt, mailbase deinstalliert und neu installiert.

Danach postfix neu installiert, newaliases ausgeführt.

Jetzt der Versuch postfix mit der mitgelieferten konfig zu starten ...

```
postfix -v start

postfix: name_mask: ipv4

postfix: name_mask: subnet

postfix: inet_addr_local: configured 2 IPv4 addresses

postfix: been_here: 127.0.0.0/8: 0

postfix: been_here: 172.20.90.0/24: 0

postfix: mynetworks: 127.0.0.0/8 172.20.90.0/24 

postfix/postfix-script: starting the Postfix mail system

postfix/postfix-script: fatal: mail system startup failed
```

 :Sad: 

----------

## tazinblack

neuer Versuch:

Konfig von meinem lokalen Rechner übertagen, nur myhostname und relayhost angepasst.

Diese Konfig läuft bei mir mit der gleichen postfix Version ohne Probleme.

Versuch zu starten:

```
postfix  start

postfix/postfix-script: starting the Postfix mail system

postfix/postfix-script: fatal: mail system startup failed
```

 :Evil or Very Mad: 

----------

## cryptosteve

Ab jetzt wirds zum Blindflug, da ich auf einem Gentoo-System derzeit keinen Postfix betreibe.

Such doch bitte mal nach postfix-script (liegt auf meiner Debian oldstable Kiste unter /usr/lib/postfix) und gucke, welche Aktion die Fehlermeldung

```
postfix/postfix-script: fatal: mail system startup failed
```

auslöst. Bei mir gibt es diesen Abbruch in der Form gar nicht (oder ich gucke an der falschen Stelle).

----------

## tazinblack

```
start)

        $daemon_directory/master -t 2>/dev/null || {

                $FATAL the Postfix mail system is already running

                exit 1

        }

        if [ -f $queue_directory/quick-start ]

        then

                rm -f $queue_directory/quick-start

        else

                $daemon_directory/postfix-script check-fatal || {

                        $FATAL Postfix integrity check failed!

                        exit 1

                }

                # Foreground this so it can be stopped. All inodes are cached.

                $daemon_directory/postfix-script check-warn

        fi

        $INFO starting the Postfix mail system

        # NOTE: wait in foreground process to get the initialization status.

        $daemon_directory/master -w || {

            $FATAL "mail system startup failed"

            exit 1

        }

        ;;

```

Er versucht den Master-Prozess zu starten mit master -w.

Und das schlägt fehl.

in der master manpage steht 

```
...

     Options:

       -c config_dir

              Read the main.cf and master.cf configuration files in the named directory instead of

              the default configuration directory.  This also overrides  the  configuration  files

              for other Postfix daemon processes.

       -D     After initialization, run a debugger on the master process. The debugging command is

              specified with the debugger_command in the main.cf global configuration file.

       -d     Do not redirect stdin, stdout or stderr to /dev/null, and do not  discard  the  con-

              trolling terminal. This must be used for debugging only.

       -e exit_time

              Terminate  the  master process after exit_time seconds. Child processes terminate at

              their convenience.

       -t     Test mode. Return a zero exit status when the master.pid lock file does not exist or

              when  that  file  is  not locked.  This is evidence that the master(8) daemon is not

              running.

        -v     Enable verbose logging for debugging purposes. This option is  passed  on  to  child

              processes. Multiple -v options make the software increasingly verbose.

       -w     Wait  in  a  dummy foreground process, while the real master daemon initializes in a

              background process.  The dummy foreground process returns a zero exit status only if

              the  master daemon initialization is successful, and if it completes in a reasonable

              amount of time.

              This feature is available in Postfix 2.10 and later.    

```

```
# ./master -c /etc/postfix/ -w -d -v

# echo $?

1

#

```

Auch keine richtige Fehlermeldung. Das gibts doch nicht   :Evil or Very Mad:   :Evil or Very Mad:   :Evil or Very Mad: 

----------

## cryptosteve

Hi,

füge dem Aufruf doch testweise mal ein -D hinzu ... passiert da noch was, oder kommt er gar nicht bis zum Debugger?

Und bei -w bin ich nicht sicher, ob er statt einem Dummyprozess sonst einen normalen Foreground-Prozess nimmt, oder ob er standardmäßig als Daemon startet. -v und -d würde ich auch stehen lassen, das sieht sinnvoll aus.

Mir gehen allmählich auch die Ideen aus, ohne das System gesehen zu haben. Hast Du es mal mit strace versucht? (ggf. sogar nur auf master losgelassen)

----------

## tazinblack

 *cryptosteve wrote:*   

> Hi,
> 
> füge dem Aufruf doch testweise mal ein -D hinzu ... passiert da noch was, oder kommt er gar nicht bis zum Debugger?
> 
> Und bei -w bin ich nicht sicher, ob er statt einem Dummyprozess sonst einen normalen Foreground-Prozess nimmt, oder ob er standardmäßig als Daemon startet. -v und -d würde ich auch stehen lassen, das sieht sinnvoll aus.
> ...

 

Den Debugger versucht er zu starten, der ist aber nicht installiert.

Ohne -w bekomme ich den Prompt nie zurück. 

Mit strace kenn ich mich gar nicht aus, kann ich bare gerne versuchen wenn mich das weiterbringen könnte.

Ich installiere den mal eben.

----------

## tazinblack

ok strace ist installiert.

In dem Fall wahrscheinlich so ausführen 

```
strace -f postfix start
```

und dann wahrscheinlich die letzten 20 Zeilen.

Oder hättest Du lieber einen anderen Aufruf?

----------

## cryptosteve

Ach, ich hab gar keine Ahnung.

Ich habe es immer mit "-o $tracefile" gestartet und die werden zum Teil erheblich fett. Die letzten 20 Zeilen sind ein Witz, da kommt man leider schnell auf viele tausend Zeilen.

Versuchs halt testweise auch mal auf 'master' loszulassen - es ist vermutlich ohnehin schwierig, dem etwas sinnvolles zu entnehmen. Aber da es auch mit intakter Konfiguration nicht läuft und alle notwendigen Abhängigkeiten vorhanden sind, tippe ich ja irgendwie immer noch auf ein Rechte- oder Verzeichnisproblem (auch wenn 'check' nichts zutage gefördert hat).

----------

## tazinblack

Ist wirklich ne Menge Zeugs.

Da ich auch denke dass es sich um ein Rechteproblem oder einen fehlenden Ordner handelt, hab mich beim tracen mal auf das Dateimanagement beschränkt.

Da fällt mir das hier auf:

```
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3

read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\232%\2\0\0\0\0\0"..., 832) = 832

close(3)                                = 0

close(3)                                = -1 EBADF (Bad file descriptor)

close(4)                                = -1 EBADF (Bad file descriptor)

close(5)                                = -1 EBADF (Bad file descriptor)

close(6)                                = -1 EBADF (Bad file descriptor)

close(7)                                = -1 EBADF (Bad file descriptor)

...

```

Danach kommt noch ca. 500 mal der selbe Fehler. Dann liest er noch die main.cf, legt ne master.pid und ne master.lock an.

Dann liest er die master.cf, /etc/nsswitch.conf, die ld.so.cache, /lib64/libnss_db.so.2, /lib64/libnss_files.so.2, 

3 mal die /var/db/services.db und dann kommt 

```
[pid 18324] +++ killed by SIGKILL +++

--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=18324, si_status=SIGKILL, si_utime=9992, si_stime=0} ---

+++ exited with 1 +++

```

und das wars dann.

Der Fehler mit der libc kommt mir komisch vor, als Schuss ins Blaue baue ich mal neu...

----------

