Postfix mit MySQL streikt nach Update
Wenn du auf deinem Debian (vielleicht auch Verwandte) System neulich postfix geupdated hast, postfix mit MySQL verwendest, und dich nun wunderst warum du keine E-Mails mehr bekommst, gibt’s hier die Lösung!
1. In deiner /var/log/mail.warn und /var/log/mail.err tauchen sachen auf wie
postfix/trivial-rewrite[23095]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
2. Dein E-Mail client Spuckt meldungen aus wie
3. Dein ganzes Serversystem kommt dir ungewöhnlich langsam vor.
Hier die Ursache:
Das Update hat das Init-Script zum starten von Postfix ausgetauscht und nach beenden des Updates ausgeführt. Im neuen Init-Script fehlt jedoch der Teil der die Socket-Datei von MySQL in die ChRoot-Umgebung von Postfix linkt. Das Resultat daraus ist, das Postfix sich nicht mehr mit dem MySQL Server verbinden kann, weil in der ChRoot-Umgebung eine alte oder garkeine Socket-Datei ist.
Um diesen schwerwiegenden Fehler zu beheben fügt man einfach die nachfolgende Zeilen in /etc/init.d/postfix zwischen
case "$1" in
start)
log_daemon_msg "Starting Postfix Mail Transport Agent" postfix
RUNNING=$(running)
if [ -n "$RUNNING" ]; then
log_end_msg 0
elseund
# see if anything is running chrooted.
NEED_CHROOT=$(awk '/^[0-9a-z]/ && ($5 ~ "[-yY]") { print "y"; exit}' /etc/postfix/master.cf)ein.
Hier nun die entscheidenden Zeilen zum erfolg:
# CHANGE FOR USE WITH MYSQL
if [ -e /var/spool/postfix/var/run/mysqld/mysqld.sock ]; then
rm /var/spool/postfix/var/run/mysqld/mysqld.sock;
fi
mkdir -p /var/spool/postfix/var/run/mysqld
chown mysql /var/spool/postfix/var/run/mysqld
ln /var/run/mysqld/mysqld.sock /var/spool/postfix/var/run/mysqld/mysqld.sock
# END OF CHANGE FOR USE WITH MYSQLWenn ihr dann versucht wieder E-Mail abzurufen, nicht vergessen ggf. den courier-authdeamon wieder anzuschmeissen, sonst klappts auch nicht.
Appendix:
Es kann auch vorkommen das sich durch den Updatevorgang euer MySQL aufhängt, welches ihr dann per kill-Kommando getötet habt. Achtung! Einige hatten danach beschädigte Tabellen, diese sind zu löschen falls sie nicht repariert werden können! Ist schade und doof, aber es geht nicht anders. Lasst ihr diese Tabellen beschädigt wird sich euer MySQL bei jedem zugriff auf diese Tabellen aufhängen. Sucht als erstes bei den Mailtabellen und danach nach häufigkeit der Verwendung der Tabellen/Datenbanken.
Viel Glück!

