PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mailserver: Probleme im Zusammenspiel von Postfix und Cyrus



Thanil.Bernetar
15.10.04, 16:59
Ich weiss, es gibt tausend Threads zu diesem Thema. Aber ich habe lange gesucht und keine passende Antwort gefunden.

Das Problem:

Ich habe einen SuSE Linux 9.0 Server mit Postfix und Cyrus.

Cyrus ist gut installiert. Clients können sich verbinden und ihre E-Mail sehen.

Aber es gibt Probleme mit der lokalen Auslieferung von E-Mails.

Wenn ich mailq aufrufe, dann sehe ich viele Einträge wie den folgenden:


F325A3ADE7 45510 Thu Oct 14 22:24:15 MAILER-DAEMON@pop.directnic.com
(connect to localhost[127.0.0.1]: Connection refused)
name@server.adresse.de

Ich kann nicht mit "postfix flush" die Mails ausliefern.

Hier die Ausgabe von "postconf -n":


server:~ # postconf -n
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
canonical_maps = hash:/etc/postfix/canonical
command_directory = /usr/sbin
config_directory = /etc/postfix
content_filter = vscan:
daemon_directory = /usr/lib/postfix
debug_peer_level = 2
defer_transports =
disable_dns_lookups = no
inet_interfaces = 127.0.0.1
mail_name = Postfix on SuSE Linux 9.0 (i386)
mail_owner = postfix
mail_spool_directory = /var/mail
mailbox_transport = lmtp:unix:public/lmtp
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
masquerade_domains =
masquerade_exceptions = root
mydestination = $myhostname, localhost.$mydomain
mydomain = adresse.de
myhostname = server.adresse.de
myorigin = $myhostname
newaliases_path = /usr/sbin/sendmail
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/packages/postfix/README_FILES
relayhost =
relocated_maps = hash:/etc/postfix/relocated
sample_directory = /etc/postfix
sender_canonical_maps = hash:/etc/postfix/sender_canonical
sendmail_path = /usr/sbin/sendmail
setgid_group = maildrop
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_pass
smtp_sasl_security_options = noanonymous
smtpd_sender_restrictions = hash:/etc/postfix/access
transport_maps = hash:/etc/postfix/transport


Ich vermute, dass es vielleicht an sendmail oder an mailbox_transport liegen könnte, ganz einfach deshalb, weil ich es bisher nicht gepeilt habe, was lmtp macht bzw. ob sendmail richtig konfiguriert ist (oder überhaupt zum lokalen ausliefern gebraucht wird). Es gibt noch die Möglichkeit hier bei mailbox_transport = cyrus zu setzen, aber das bringt bei mir auch nichts.

Aber vielleicht liegt der Fehler auch ganz woanders und ich habe einfach keinen Durchblick.

Kann mir jemand helfen? Ich fress sonst meine Maus...

Thanil.Bernetar
15.10.04, 18:56
Ich habe noch einmal ein paar Stündchen weiter gemacht.

Ich habe sowohl


mailbox_transport = cyrus

probiert (und dabei sicher gestellt, dass lmtpd läuft), als auch


mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp

ausprobiert.

Außerdem habe ich mich vergewissert, dass postfix Schreibrechte in /var/lib/imap hat (obwohl das ja nicht nötig sein sollte, weil ja laut config an den lmtp von cyrus übergeben wird.

Davon abgesehen habe ich auch schon


content_filter = vscan:

ausgeschaltet, um eventuelle Probleme beim Übergeben an den in vscan definierten content-Filter zu umgeben. Wenn ich nicht völlig vor die Wand gelaufen bin, dann sollte es doch jetzt funktionieren?

Aber dennoch hängen die Mails in der mailq fest!!!

Die Fehlermeldung "connection refused" spricht ja auch dafür, dass mit der Authentifizierung irgendwas nicht stimmen könnte. Also vielleicht versucht postfix auf dem falschen Port / Socket / wasauchimmer mit cyrus zu verbinden. Aber wie finde ich das raus?

Es ist zum Haare raufen.

Terran Marine
15.10.04, 19:43
Bitte mal ein betreffendes Log posten,

das erleichtert die Fehlersuche.

Gruß
Terran

Thanil.Bernetar
17.10.04, 16:20
Es ist eigentlich immer das Gleiche. Im Moment habe ich 37 Mails in der mailq, alle mit dem Status "deferred".

/var/log/mail

Oct 17 16:07:59 server postfix/qmgr[9516]: F325A3ADE7: from=<MAILER-DAEMON@pop.directnic.com>, size=45510, nrcpt=1 (queue active)
Oct 17 16:07:59 server postfix/qmgr[9516]: F325A3ADE7: to=<support@localhost.adresse.de>, orig_to=<support@localhost>, relay=none, delay=236624, status=deferred (connect to localhost[127.0.0.1]: Connection refused)


mailq

F325A3ADE7 45510 Thu Oct 14 22:24:15 MAILER-DAEMON@pop.directnic.com
(connect to localhost[127.0.0.1]: Connection refused)
support@localhost.adresse.de

-- 1050 Kbytes in 37 Requests.

/etc/postfix/main.cf

mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp

ps aux | grep lmtp

cyrus 7928 0.0 0.3 23304 1584 ? S Oct15 0:00 lmtpd
root 14884 0.0 0.1 1792 556 pts/0 R 16:13 0:00 grep lmtp

ps aux | grep smtp

root 14886 0.0 0.1 1792 556 pts/0 R 16:13 0:00 grep smtp
--> vielleicht ist hier was falsch mit dem smtp? Keine Ahnung!

ps aux | grep cyrus

cyrus 7923 0.0 0.2 3780 1160 ? S Oct15 0:00 /usr/lib/cyrus/bin/master -p /var/run/cyrus.pid -d
cyrus 7928 0.0 0.3 23304 1584 ? S Oct15 0:00 lmtpd
root 14888 0.0 0.1 1792 556 pts/0 R 16:14 0:00 grep cyrus


Was brauchst du sonst noch? In der /var/log/message tauchen gar keine Fehlermeldungen oder Warnmeldungen auf. Nur Routine-Meldungen über den laufenden cyrus:


Oct 17 16:10:48 server master[14862]: about to exec /usr/lib/cyrus/bin/ctl_cyrusdb
Oct 17 16:10:48 server ctl_cyrusdb[14862]: checkpointing cyrus databases
Oct 17 16:10:48 server ctl_cyrusdb[14862]: archiving log file: /var/lib/imap/db/log.0000000003
Oct 17 16:10:48 server ctl_cyrusdb[14862]: archiving database file: /var/lib/imap/mailboxes.db
Oct 17 16:10:48 server ctl_cyrusdb[14862]: done checkpointing cyrus databases
Oct 17 16:10:48 server master[7923]: process 14862 exited, status 0


Wenn ich mich mit einem Mailclient mit dem IMAP verbinde, dann erscheint folgendes in der messages:


Oct 17 16:16:26 server master[14919]: about to exec /usr/lib/cyrus/bin/imapd
Oct 17 16:16:26 server imap[14919]: executed
Oct 17 16:16:26 server imapd[14919]: accepted connection
Oct 17 16:16:28 server imapd[14919]: login: verbindungsadresse.de[84.137.139.51] johndoe plaintext
Oct 17 16:16:29 server imapd[14919]: seen_db: user johndoe opened /var/lib/imap/user/j/johndoe.seen
Oct 17 16:16:29 server imapd[14919]: open: user johndoe opened INBOX

Terran Marine
17.10.04, 17:59
[/code]

/etc/postfix/main.cf

mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp


Ich würde es nochmal mit mailbox_transport cyrus probieren, idR ist dies weniger fehleranfällig, kannst du bitte deine master.cf auch noch posten?

Gruß
Terran

Thanil.Bernetar
17.10.04, 23:57
Vielen Dank für den Tip. Mit "mailbox_transport cyrus" funktioniert es leider ebenso wenig.

Hier die master.cf


# ================================================== ========================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (50)
# ================================================== ========================
smtp inet n - n - - smtpd
#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 nqmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
flush unix n - n 1000? 0 flush
smtp unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
#localhost:10025 inet n - n - - smtpd -o content_filter=
#smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes
#submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
#tlsmgr fifo - - n 300 1 tlsmgr
#
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
# The Cyrus deliver program has changed incompatibly.
#
cyrus unix - n n - - pipe
flags=R user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -m ${extension} ${user}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
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=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
vscan unix - n n - 10 pipe
flags=q user=vscan argv=/usr/sbin/amavis ${sender} ${recipient}
procmail unix - n n - - pipe
flags=R user=cyrus argv=/usr/bin/procmail -t -m USER=${user} EXT=${extension} /etc/procmailrc
relay unix - - n - - smtp
proxymap unix - - n - - proxymap

Thanil.Bernetar
18.10.04, 12:01
Ich hatte gerade einen Geistesblitz. Ich muss den Fehler einkreisen.

Ich habe gerade mal "mailbox_transport cyrus" durch "mailbox_transport cyiorus" ersetzt, d.h. absichtlich einen Fehler eingebaut, und mir dann nach einem "postfix flush" noch einmal die Fehlermeldungen angeschaut. Seltsamerweise hat sich die Fehlermeldung gar nicht verändert!


status=deferred (connect to localhost[127.0.0.1]: Connection refused)

D.h. wohl, dass es keinesfalls an dem Eintrag "mailbox_transport" liegen kann, sondern der Fehler irgendwo anders liegt. Doch wo? Was sagt die Fehlermeldung eigentlich aus???

Ich habe mal geprüft, ob der qmgr überhaupt läuft:


server:~ # ps aux |grep qmgr
postfix 17415 0.0 0.2 4224 1396 ? S 11:57 0:00 qmgr -l -t fifo -u
root 17512 0.0 0.1 1792 560 pts/3 R 12:02 0:00 grep qmgr

Thanil.Bernetar
18.10.04, 12:24
Gerade dachte ich, dass vielleicht in der Bearbeitungskette irgendwo ein Glied fehlt, d.h. nicht läuft.

fetchmail --> postfix / qmgr / smtpd --> cyrus

Fetchmail läuft. Cyrus läuft. Aber Postfix liefert scheinbar nicht aus. Mir ist aufgefallen, dass qmgr im Hintergrund läuft:


server:~ # ps aux |grep postfix
root 17720 0.0 0.2 4100 1312 ? S 12:18 0:00 /usr/lib/postfix/master
postfix 17724 0.0 0.2 4204 1300 ? S 12:18 0:00 pickup -l -t unix -u
postfix 17725 0.0 0.2 4224 1396 ? S 12:18 0:00 qmgr -l -t unix -u
postfix 17726 0.0 0.2 4220 1352 ? S 12:18 0:00 tlsmgr -l -t fifo -u
root 17768 0.0 0.1 1792 560 pts/3 R 12:22 0:00 grep postfix


Seltsamerweise fehlt aber der smtpd! Vielleicht ist das das Problem?

In meiner master.cf stehen diverse Einträge für smtp, aber manche sind auskommentiert und ich weiss nicht, wie es richtig ist:


server:~ # less /etc/postfix/master.cf |grep smtp
# for the SMTP server: localhost:smtp receives mail via the loopback
smtp inet n - n - - smtpd
smtp unix - - n - - smtp
#localhost:10025 inet n - n - - smtpd -o content_filter=
#smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes
#submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
bsmtp unix - n n - - pipe
flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
relay unix - - n - - smtp


Ich habe es auch schon mit einer modifizierten Version der master.cf versucht:

server:~ # less /etc/postfix/master.cf |grep smtp
# for the SMTP server: localhost:smtp receives mail via the loopback
smtp inet n - n - - smtpd
smtp unix - - n - - smtp
localhost:10025 inet n - n - - smtpd -o content_filter=
#smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
bsmtp unix - n n - - pipe
flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient


Aber das hat auch nicht geholfen.

HELP!

Thanil.Bernetar
18.10.04, 12:32
Ich weiss, ich nerve, aber das muss jetzt sein. Wenn mir schon keiner helfen kann, dann muss wenigstens jeder dabei zusehen, wie ich elendig versuche mir selbst zu helfen.

Ich habe gerade diese Fehlermeldung in der /var/log/mail gefunden, nachdem ich postfix mal neu gestartet habe:


Oct 18 12:29:47 server postfix/smtp[18017]: connect to localhost[127.0.0.1]: Connection refused (port 10024)

Also scheint doch der smtp irgendwie ein Problem zu haben, richtig zu starten...

Doch was tun?

Thanil.Bernetar
18.10.04, 12:58
Bums. Problem hat sich erledigt. Ich danke allen, die mir geholfen haben (in erster Linie also mir selbst :))

Ich weiss aber gar nicht, wieso es jetzt wieder klappt. Ich habe in der main.cf

mailbox_transport = lmtp:unix:public/lmtp gesetzt (aber damit hatte es ganz am Anfang nicht mehr geklappt, weshalb ich auf die beiden anderen Einträge gewechselt hatte).

Schön, dass es läuft, aber sehr unbefriedigend nicht zu wissen warum...

Vielleicht lag es an diesem Befehl:

postsuper -r ALL

Tomek
18.10.04, 12:59
Schön, dass es läuft, aber sehr unbefriedigend nicht zu wissen warum...

Vielleicht lag es an diesem Befehl:

postsuper -r ALL

Was dieser Befehl genau macht, erklärt dir die Manpage zum Tool postsuper:

-r queue_id
Requeue the message with the named queue ID from the named mail
queue(s) (default: hold, incoming, active and deferred). To
requeue multiple messages, specify multiple -r command-line
options. Alternatively, if a queue_id of - is specified, the
program reads queue IDs from standard input.

Specify -r ALL to requeue all messages. As a safety measure, the
word ALL must be specified in upper case.