Jump to content
Froxlor Forum
  • 0

[solved] Probleme mit Postfix/Courier


Jockl

Question

Hallo zusammen,

 

nach l?ngerer Vorbereitungszeit habe ich mich gestern entschlossen, meinen Lenny V-Server einem Upgrade auf Squeeze (mit den Dotdeb repository f?r PHP und MySQL) zu unterziehen. Au?erdem habe ich anschlie?end ein Upgrade von SysCP auf Froxlor vorgenommen. Die notwendigen Konfigurationen habe ich gem. der Froxlor-Vorschl?ge durchgef?hrt bzw. die entsprechenden Dateien angepasst und die Dienste neu gestartet. Aber wenn ich jetzt nicht doch ein Problem h?tte w?rde ich hier nicht schreiben... ;)

 

Der Mailserver (Postfix/Courier) mag mich leider nicht mehr und empf?ngt bzw. versendet keine Mails mehr. Ich habe hier schon recht viele Threads durchgelesen, nur eine L?sung war nicht dabei. Es ist schade, dass so mancher Thread abbricht, wenn es pl?tzlich interessant w?rde oder die schlussendliche L?sung nicht beschrieben ist... ;)

 

Wenn ich mir meine log-Dateien so durchsehe, scheint es Probleme mit der MySQL-Verbindung zu geben. Zur Info h?nge ich mal einen Auszug meine syslog Datei an (Nr. der Servers ge?ndert). Ich kann auch gerne noch Ausz?ge der mail-log Dateien einstellen. Auf der Suche nach einer m?glichen Ursache bin ich unter anderem auf diese Seite gesto?en. Allerdings z?gere ich diese ?nderung vorzunehmen. Zum Einen, da mir Warnhinweise, dass an den Tabellen etwas passieren kann nie besonders gut gefallen. Zum Anderen hatte die Datei etc/init.d/postfix meines vorherigen Lenny-Systems diese ?nderung auch nicht beinhaltet und dort lief der Mailserver einwandfrei.

 

Ich w?rde mich freuen, wenn mir jemand Unterst?tzung geben k?nnte oder ein paar n?tzliche Tipps f?r mich h?tte.

 

Vielen Dank im Voraus und Gru?

Jockl

 

 

Edit: Thema als erledigt gekennzeichnet

syslog_postfix.txt

Link to comment
Share on other sites

16 answers to this question

Recommended Posts

warning: connect to mysql server localhost: Can't connect to local MySQL server through socket

 

L?uft MySQL (scheinbar, wenn du froxlor erfolgreich benutzt) bzw. wie ist der MySQL-Server konfiguriert? Hast du an den Debian-Standards etwas ge?ndert?

Link to comment
Share on other sites

Magst Du uns noch Deine master.cf, main.cf und mysql-virtual_alias_maps.cf (Achtung Passwort!) zeigen?

Schon versucht per Console mithilfe der der Daten aus mysql-virtual_alias_maps.cf Dich in MySQL einzuloggen?

 

Der genannte Tipp k?nnte helfen. Muss aber nicht. H?ngt von der mysql-virtual_alias_maps.cf ab.

Der Tipp setzt lediglich einen MySQL-Socket in die Chroot-Umgebung von Postfix. Und das auch noch per Hardlink.

Ein "mount --bind /var/run/mysqld/ /var/spool/postfix/var/run/mysqld/" w?re hier zu bevorzugen.

Falls aber MySQL per Port angesprochen wird (also nicht ?ber den Socket) dann hilft dieser Tipp rein gar nichts.

 

huschi.

Link to comment
Share on other sites

Danke f?r Eure Antworten! :)

 

MySQL an sich l?uft, was dazu f?hrt, dass in unserem Forum wieder entsprechende Aktivit?ten herrschen, aber alle auf Ihre Mails warten... ;)

 

Die Tabellen incl. der Tabelle syscp kann ich ?ber die Konsole (z.B. mysql -usyscp -p) mit den Zugangsdaten ansprechen.

 

Anbei h?nge ich mal die Dateien, huschi. Die main.cf und mysql-virtual_alias_maps.cf entsprechen 1:1 dem, was Froxlor vorschl?gt.

 

 

Nachtrag: wenn ich das richtig sehe, l?uft SMTP nicht in der CHROOT Umgebung...

postfix_cf_Dateien.tar

Link to comment
Share on other sites

Wenn Du nur "mysql -usyscp -p syscp" eingibst, verbindest Du Dich i.d.R. ?ber den Socket. (Siehe my.cnf Abschnitt [client])

Du musst wirklich den genauen Weg nachvollziehen: "mysql -hlocalhost -usyscp -p syscp"

 

PS: So kleine Config-Dateien kannst Du ruhig in CODE-Tags hier rein schreiben. Ein tar-File erst downzuloaden und zu entpacken sind unn?tige Steine im Wege eines Helfenden.

 

huschi.

Link to comment
Share on other sites

Wenn Du nur "mysql -usyscp -p syscp" eingibst, verbindest Du Dich i.d.R. ?ber den Socket. (Siehe my.cnf Abschnitt [client])

Du musst wirklich den genauen Weg nachvollziehen: "mysql -hlocalhost -usyscp -p syscp"

Ah, das war mir nicht klar. Aber auch auf dem von Dir genannten Weg komme ich ?ber die Konsole auf die Tabelle.

 

PS: So kleine Config-Dateien kannst Du ruhig in CODE-Tags hier rein schreiben. Ein tar-File erst downzuloaden und zu entpacken sind unn?tige Steine im Wege eines Helfenden.

Das war nicht meine Absicht. Werde es mir merken. :)

 

Hier nochmal die main.cf

## General Postfix configuration
# should be the default domain from your provider eg. "server100.provider.tld"
mydomain = h1*****8.stratoserver.net

# should be different from $mydomain eg. "mail.$mydomain"
myhostname = h1*****8.stratoserver.net

mydestination = $myhostname,
$mydomain,
localhost.$myhostname,
localhost.$mydomain,
localhost
mynetworks = 127.0.0.0/8
inet_interfaces = all
append_dot_mydomain = no
biff = no

# Postfix performance settings
default_destination_concurrency_limit = 20
local_destination_concurrency_limit = 2

# SMTPD Settings
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_helo_required = yes
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_unauth_pipelining,
reject_non_fqdn_recipient
smtpd_sender_restrictions = permit_mynetworks,
reject_sender_login_mismatch,
permit_sasl_authenticated, 
reject_unknown_helo_hostname, 
reject_unknown_recipient_domain, 
reject_unknown_sender_domain
smtpd_client_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unknown_client_hostname
# Maximum size of Message in bytes (50MB)
message_size_limit = 52428800

## SASL Auth Settings
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes

# Virtual delivery settings
virtual_mailbox_base = /var/kunden/mail/
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf
smtpd_sender_login_maps = mysql:/etc/postfix/mysql-virtual_sender_permissions.cf
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000

# Local delivery settings
local_transport = local
alias_maps = $alias_database

# Default Mailbox size, is set to 0 which means unlimited!
mailbox_size_limit = 0
virtual_mailbox_limit = 0

### TLS settings
###
## TLS for outgoing mails from the server to another server
#smtp_tls_security_level = may
#smtp_tls_note_starttls_offer = yes
## TLS for email client
#smtpd_tls_security_level = may
#smtpd_tls_cert_file = /etc/ssl/server/h1*****8.stratoserver.net.pem
#smtpd_tls_key_file = $smtpd_tls_cert_file
#smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
#smtpd_tls_loglevel = 1
#smtpd_tls_received_header = yes

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

 

und die master.cf

#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
#submission inet n       -       -       -       -       smtpd
#  -o smtpd_enforce_tls=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps     inet  n       -       -       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628      inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       -       300     1       oqmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       -       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       -       -       -       smtp
-o fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache	  unix	-	-	-	-	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}
#
# 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/lib/bsmtp/bsmtp -t$nexthop -f$sender $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}

retry     unix  -       -       -       -       -       error

 

sowie die mysql-virtual_alias_maps.cf

user = syscp
password = ******
dbname = syscp
table = mail_virtual
select_field = destination
where_field = email
additional_conditions = and TRIM(destination) <> ''
hosts = localhost 

Link to comment
Share on other sites

Nachtrag:

 

Ich denke, dass ich meine obige Vermutung revidieren muss. Smtp scheint in der chroot Umgebung zu laufen. Sonst m?sste ja in der entsprchenden Zeile der master.cf ein "n" stehen, oder?

W?rde damit der Tipp aus dem Link meines ersten Beitrages doch eine L?sung darstellen? In dem Verzeichnis "/var/spool/postfix/var/run/mysqld/" ist n?mlich die mysqld.sock nicht vorhanden.

 

Leider kann ich nicht beurteilen, ob es nun besser ist, einen Hardlink zu setzen oder es per "mount" zu machen, wie huschi vorgeschlagen hat.

Link to comment
Share on other sites

Den Nachtrag hatte ich gar nicht gesehen. Sonst h?tte ich gleich wiedersprochen. ;)

 

Zum Hardlink (siehe auch Wikipedia): Beim Hardlink wird der Inode (hier des Unix-Sockets) zus?tzlich in ein anderes Verzeichnis verlinkt. Wenn MySQL seinen Socket l?scht (nur die Verlinkung zum Inode) und neu anlegt (neuer Inode z.B. per mysql restart oder gar ein Reboot) bleibt der Hardlink mit dem alten Inode verbunden, w?rend MySQL einen neuen Inode als Unix-Socket anlegt. Und schon funktioniert diese L?sung nicht mehr.

Der Vollst?ndigkeit halber: Ein Softlink funktioniert nicht, weil es nicht aus der Chroot-Umgebung raus linken kann.

Und genau das alles umgeht man mit "mount --bind". Allerdings kann man damit nur Verzeichnisse mounten. Was hier aber nicht schlimm ist.

 

Zu Deinem Problem:

Probier es einfach mal. Schaden tut es nicht. Es ist nur eine Commandozeile (es muss nichts restartet werden) und mit einem umount ist es schnell wieder weg.

(Allerdings denke ich nicht, dass es die L?sung ist.)

 

huschi.

Link to comment
Share on other sites

Noch eine ganz andere Vermutung:

Lenny V-Server einem Upgrade auf Squeeze (mit den Dotdeb repository f?r PHP und MySQL)

Welche MySQL-Server/Client-Version hast Du jetzt? Und was zeigt Dir "apt-cache show postfix-mysql" an?

Evtl. hast Du einen MySQL-Versions-Konflikt...?

 

huschi.

Link to comment
Share on other sites

Danke Dir f?r Deine Antworten.

 

Anbei mal die mysql-Versionen:

 

mysql-server 5.5.19

mysql-client 5.0.8

postfix-mysql 2.7.1.-1

 

Das mit dem mount werde ich also mal probieren, wollte aber erst auf die die mysql-Versionen antworten.

 

 

Edit:

 

Den mount Befehl habe ich nun mal ausgef?hrt. Der Erfolg war aber eher "m??ig". MYSQL war wegen zu vieler Verbindungen auf einmal gar nicht mehr erreichbar.

Link to comment
Share on other sites

mysql-server 5.5.19

mysql-client 5.0.8

Da passt was nicht, gelle! ;)

 

postfix-mysql 2.7.1.-1

Ich meinte wirklich die Ausgabe von "apt-cache show". Dort steht, welche MySQL-Version er unterst?tzt.

 

MYSQL war wegen zu vieler Verbindungen auf einmal gar nicht mehr erreichbar.

F?r den Super-Admin "root" ist immer eine Verbindung reserviert. D.h. Du kannst per "show processlist;" Dir anzeigen lassen, was den Server auslastet.

 

huschi.

Link to comment
Share on other sites

Wenn die mysql-client Version nicht mit der mysql-server Version zusammen passt, dann graust es mir jetzt schon... ;)

 

Hier mal die Ausgabe von "apt-cache show postfix-mysql"

Package: postfix-mysql
Priority: extra
Section: mail
Installed-Size: 112
Maintainer: LaMont Jones <lamont@debian.org>
Architecture: i386
Source: postfix
Version: 2.7.1-1+squeeze1
Depends: libc6 (>= 2.1.3), libmysqlclient16 (>= 5.1.21-1), postfix (= 2.7.1-1+squeeze1)
Filename: pool/main/p/postfix/postfix-mysql_2.7.1-1+squeeze1_i386.deb
Size: 44180
MD5sum: 6e1f63934a8f4a6e66f30f14db30fc71
SHA1: 3bfada5db44c51bfd18cc482ad8fd284f0466477
SHA256: aa5aa9173c8d1760b7d508ecdbcd76b0b0e15dfb42bbff679d5f14ae313b3364
Description: MySQL map support for Postfix
Postfix is Wietse Venema's mail transport agent that started life as an
 alternative to the widely-used Sendmail program.  Postfix attempts to
 be fast, easy to administer, and secure, while at the same time being
 sendmail compatible enough to not upset existing users. Thus, the outside
 has a sendmail-ish flavor, but the inside is completely different.
This provides support for MySQL maps in Postfix. If you plan to use MySQL
maps with Postfix, you need this.
Tag: devel::lang:sql, interface::daemon, network::server, protocol::smtp, role::program, security::authentication, use::storing, works-with::db, works-with::mail

 

Jetzt habe ich den mount-Befehl noch einmal abgesetzt, bekomme aber keinen Fehler mehr wegen zu vieler Verbindungen....

Link to comment
Share on other sites

Nach dem der erneute mount Befehl ohne Probleme durch ging, habe ich den postfix doch noch einmal neu gestartet. In der syslog erschien daraufhin keine Fehlermeldung mehr und so wie es scheint, kann ich nun auch wieder E-Mails senden.... :)

 

Ich hoffe, dass es das nur war.

 

Danke Dir huschi!!! :D

 

Mich w?rde aber trotzdem noch interessieren, ob ich wegen der unterschiedlichen mysql-Versionen etwas machen muss.

Link to comment
Share on other sites

Sch?n zu h?ren. Interessant, dass es bei Dir ?ber den Socket geht.

 

Mich w?rde aber trotzdem noch interessieren, ob ich wegen der unterschiedlichen mysql-Versionen etwas machen muss.

Theoretisch ja. Zwischen MySQL-Server 5.0 und 5.5 liegen Welten. Allerdings hat sich das Protokoll nicht ge?ndert. Aber es gibt API-Features in 5.5 die mit dem 5.0-Client nicht erreichbar sind. Es macht also Sinn die Client-Version anzupassen.

Prinzipiell kannst Du auch auf ein "never-change-a-running-system" pl?dieren. Aber falls weitere Probleme auftreten, k?nnte es daran liegen.

 

huschi.

Link to comment
Share on other sites

Sch?n zu h?ren. Interessant, dass es bei Dir ?ber den Socket geht.

Ja, mich freut das auch. :)

Aber ich denke, dass es ?ber den Socket l?uft ist doch normal, wenn SMTP in der Chroot-Umgebung l?uft. Oder verstehe ich da etwas falsch?

 

 

Theoretisch ja. Zwischen MySQL-Server 5.0 und 5.5 liegen Welten. Allerdings hat sich das Protokoll nicht ge?ndert. Aber es gibt API-Features in 5.5 die mit dem 5.0-Client nicht erreichbar sind. Es macht also Sinn die Client-Version anzupassen.

Prinzipiell kannst Du auch auf ein "never-change-a-running-system" pl?dieren. Aber falls weitere Probleme auftreten, k?nnte es daran liegen.

Danke Dir f?r den Hinweis. Ich werde mich jetzt erst einmal ein paar anderen notwendigen Anpassungen von PHP-Scripten widmen (habe da in meinem Forum ein paar Funktionen ?bersehen, die nun unter 5.3 nicht mehr richtig laufen :rolleyes: ) und bzgl. mysql-client Version dem "never-change-a-running-system"-Motto folgen, aber weiterhin im Hinterkopf behalten.

Link to comment
Share on other sites

Aber ich denke, dass es ?ber den Socket l?uft ist doch normal, wenn SMTP in der Chroot-Umgebung l?uft.

Umgekehrt: Gerade in Chroots ist der Socket ein Problem da er nur auf Verzeichnisebene erreichbar ist.

Ein TCP-Port hingegen ist davon unabh?ngig.

 

Aber ich hab die L?sung gefunden, warum es bei Dir so ist:

Aus "man mysql_table":

NOTE: if you specify localhost as a hostname (even

if you prefix it with inet:), MySQL will connect to

the default UNIX domain socket. In order to

instruct MySQL to connect to localhost over TCP you

have to specify

hosts = 127.0.0.1

W?rdest Du "hosts = 127.0.0.1" in die mysql-*.cf setzten, w?rde es ?ber den TCP-Port gehen und Du musst Dein System (init-Script bzw. fstab) nicht mit dem mount-Befehl erweitern.

 

huschi.

Link to comment
Share on other sites

Umgekehrt: Gerade in Chroots ist der Socket ein Problem da er nur auf Verzeichnisebene erreichbar ist.

Ein TCP-Port hingegen ist davon unabh?ngig.

Ok, da hatte ich wohl etwas falsch verstanden. Das muss ich mir noch einmal zu Gem?te f?hren.

 

 

Aber ich hab die L?sung gefunden, warum es bei Dir so ist:

Aus "man mysql_table":

......

......

W?rdest Du "hosts = 127.0.0.1" in die mysql-*.cf setzten, w?rde es ?ber den TCP-Port gehen und Du musst Dein System (init-Script bzw. fstab) nicht mit dem mount-Befehl erweitern.

Das hatte ich im Vorfeld schon probiert (sorry, hatte ich vergessen zu erw?hnen), hat aber auch nicht zum Erfolg gef?hrt. Mit "hosts = 127.0.0.1" konnte ich zwar Mails empfangen aber keine Mails versenden.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...