Postfix -> Procmail -> Cyrus funktioniert nicht

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Postfix -> Procmail -> Cyrus funktioniert nicht

Post by schl » 2004-05-10 22:22

Hallo zusammen,

versuche jetzt schon den ganzen abend die o. g. kombination zum laufen zu bringen. aber es haut nicht hin. die mails kommen bis zu procmail und werden dann aber nicht an cyrus ausgeliefert. alle notwendigen logs habe ich hier mal aufgeführt.

habe jetzt schon eine ewigkeit rumgelesen und keine lust mehr. vielleicht weiss ja jemand von euch weiter.

danke schonmal sCHL

/var/log/messages

Code: Select all

May 10 22:14:38 h7185 deliver[7501]: connect(/var/lib/imap/socket/lmtp) failed: Permission denied
/var/log/mail

Code: Select all

May 10 22:14:38 h7185 postfix/smtpd[7490]: connect from chl-virtualwork.com[217.160.222.186]
May 10 22:14:38 h7185 postfix/smtpd[7490]: 6E3CE6C8096: client=chl-virtualwork.com[217.160.222.186]
May 10 22:14:38 h7185 postfix/cleanup[7491]: 6E3CE6C8096: message-id=<001f01c436cb$63be66a0$0200a8c0@CHLKELLER>
May 10 22:14:38 h7185 postfix/qmgr[7201]: 6E3CE6C8096: from=<chl@lange-christian.de>, size=1784, nrcpt=1 (queue active)
May 10 22:14:38 h7185 postfix/smtpd[7490]: disconnect from chl-virtualwork.com[217.160.222.186]
May 10 22:14:38 h7185 spamd[2655]: connection from localhost [127.0.0.1] at port 32921
May 10 22:14:38 h7185 spamd[7500]: info: setuid to nobody succeeded
May 10 22:14:38 h7185 spamd[7500]: processing message <001f01c436cb$63be66a0$0200a8c0@CHLKELLER> for nobody:65534.
May 10 22:14:38 h7185 spamd[7500]: clean message (0.0/5.0) for nobody:65534 in 0.0 seconds, 1783 bytes.
May 10 22:14:38 h7185 postfix/pipe[7494]: 6E3CE6C8096: to=<web1p1@mail.chl-virtualwork.de>, orig_to=<chl@chl-virtualwork.de>, relay=procmail, delay=0, status=deferred (temporary failure)
/var/log/procmail

Code: Select all

couldn't connect to lmtpd: Permission denied^M
procmail: Program failure (75) of "/usr/lib/cyrus/bin/deliver"
 Subject: test
  Folder: /usr/lib/cyrus/bin/deliver -a -m INBOX                           1687

chris76
Moderator
Moderator
Posts: 2015
Joined: 2003-06-27 14:37
Location: Germering

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by chris76 » 2004-05-10 22:26

Also diese Kombination habe ich bei mir auch erfolgreich am laufen.

als erstes schau dir mal die Rechte von dem lmtp socket an.

dann das ^M bei

Code: Select all

couldn't connect to lmtpd: Permission denied^M 
gefällt mir nicht.
Wobei das nur die Ausgabe ist, kommt das von nem Editor aus dem du hierein gepastet hast?
Gruß Christian

BofH excuses: YOU HAVE AN I/O ERROR -> Incompetent Operator error

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by schl » 2004-05-10 22:30

hi chris76, habe schon gesehen, dass Du auch an diesem Thema dran warst.

die recht vom socket sind

Code: Select all

srwxrwxrwx    1 root     root            0 2004-05-10 22:01 lmtp
das ^M ist so in der originaldatei drin...

majortermi
Userprojekt
Userprojekt
Posts: 930
Joined: 2002-06-17 16:09

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by majortermi » 2004-05-10 23:08

Wäre es nicht sinnvoller Postfix direkt an den Cyrus ausliefern zu lassen?
Procmail sollte man ja eigentlich nicht brauchen, da Cyrus auch eine Sieve-Implementierung mitbringt.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by schl » 2004-05-11 06:33

@MajorTermi: Du magst schon recht haben, aber viele Wege führen nach Rom. Mit Hilfe von Procmail kann man recht einfach Spamassassin einbinden. Ok, geht auch in der master.cf von Postfix (habe ich gerde so im Einsatz), aber die Variante mit Procmail scheint mir etwas unkomplozierter.

sCHL

chris76
Moderator
Moderator
Posts: 2015
Joined: 2003-06-27 14:37
Location: Germering

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by chris76 » 2004-05-11 13:03

Also Christian,
- in welcher Datei ist das ^M drin?
- wie lautet in der lmtp Pfad in der imapd.conf?
- wie lautet das mailbox_command in der main.cf?
- wie schaut der eintrag von Procmail in der master.cf aus?

Das sind die Punkte die ich mir mal als erstes ansehen würde.
Gruß Christian

BofH excuses: YOU HAVE AN I/O ERROR -> Incompetent Operator error

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by schl » 2004-05-11 18:53

hi christian, hoffe Du hattest einen schönen arbeitstag...


zu 1. das ^M ist einfach im logfile von procmail drin /var/log/procmail

zu 2. imapd.conf

Code: Select all

configdirectory: /var/lib/imap
partition-default: /var/spool/imap
sievedir: /var/lib/sieve
admins: cyrus
allowanonymouslogin: no
autocreatequota: 10000
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
dracinterval: 0
drachost: localhost
sasl_pwcheck_method: saslauthd
lmtp_overquota_perm_failure: no
#
# if you want TLS, you have to generate certificates and keys
#
#tls_cert_file: /usr/ssl/certs/cert.pem
#tls_key_file: /usr/ssl/certs/skey.pem
#tls_ca_file: /usr/ssl/CA/CAcert.pem
#tls_ca_path: /usr/ssl/CA
zu 3. main.cf

Code: Select all

mailbox_transport = procmail
zu 4. master.cf

Code: Select all

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     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

maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
cyrus     unix  -       n       n       -       -       pipe
  user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -r ${sender} -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
  user=vscan argv=/usr/sbin/amavis ${sender} ${recipient}
procmail  unix  -       n       n       -       -       pipe
 flags=R user=nobody argv=/usr/bin/procmail -t -m /etc/procmailrc ${sender} ${recipient}
5. cyrus.conf

Code: Select all

START {
  recover       cmd="ctl_cyrusdb -r"
}

SERVICES {
  imap          cmd="imapd" listen="imap" prefork=0
  pop3          cmd="pop3d" listen="pop3" prefork=0
  lmtpunix      cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=0
}

EVENTS {
  checkpoint    cmd="ctl_cyrusdb -c" period=30
  delprune      cmd="ctl_deliver -E 3" period=1440
  tlsprune      cmd="tls_prune" period=1440
}
und zu guter letzt noch die procmailrc

Code: Select all

PPRIVS=yes
LOGFILE=/var/log/procmail
#VERBOSE=ON
SHELL=/bin/sh

# Mailbox-Zustellung
DELIVERMAIL="/usr/lib/cyrus/bin/deliver"
IMAP="/usr/lib/cyrus/bin/deliver -a $USER -m INBOX $USER"

# --- From-Zeile löschen, ---
# --- sonst funktioniert deliver nicht !! ---
:0fw
| formail -f -I "From "

# --- Spam Test ---
:0fw
* < 256000
| /usr/bin/spamc -f

# --- an INBOX zustellen ---
:0w
| $IMAP

# --- und Schluss ---
:0w
{
EXITCODE=$?
HOST
}

chris76
Moderator
Moderator
Posts: 2015
Joined: 2003-06-27 14:37
Location: Germering

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by chris76 » 2004-05-11 18:57

versuch mal in der imapd.conf
den socket explizit anzugeben

Code: Select all

lmtpsocket: /var/lib/imap/socket/lmtp
den Pfad musst du halt noch anpassen.

Das ist jetzt so auf den ersten Blick der einyige Unterschied den ich hab
Gruß Christian

BofH excuses: YOU HAVE AN I/O ERROR -> Incompetent Operator error

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by schl » 2004-05-11 19:13

hm, hat sich nichts geändert...

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by schl » 2004-05-11 20:33

hm, habe hier gerade noch folgendes aus den logs

Code: Select all

May 11 20:29:00 h7185 master[15431]: setrlimit: Unable to set file descriptors limit to -1: Operation not permitted
May 11 20:29:00 h7185 master[15431]: retrying with 1024 (current max)
May 11 20:29:00 h7185 master[15431]: process started
May 11 20:29:00 h7185 master[15432]: about to exec /usr/lib/cyrus/bin/ctl_cyrusdb
May 11 20:29:00 h7185 ctl_cyrusdb[15432]: recovering cyrus databases
May 11 20:29:00 h7185 ctl_cyrusdb[15432]: DBERROR db4: malloc: Cannot allocate memory: 3435973880
May 11 20:29:00 h7185 ctl_cyrusdb[15432]: DBERROR db4: PANIC: Cannot allocate memory
May 11 20:29:00 h7185 ctl_cyrusdb[15432]: DBERROR: critical database situation
May 11 20:29:00 h7185 master[15431]: process 15432 exited, status 75
May 11 20:29:00 h7185 master[15431]: ready for work
May 11 20:29:00 h7185 master[15433]: about to exec /usr/lib/cyrus/bin/tls_prune
May 11 20:29:00 h7185 tls_prune[15433]: DBERROR db4: fatal region error detected; run recovery
May 11 20:29:00 h7185 tls_prune[15433]: DBERROR: dbenv->open '/var/lib/imap/db' failed: DB_RUNRECOVERY: Fatal error, run database recovery
May 11 20:29:00 h7185 tls_prune[15433]: DBERROR: init (TLS: /var/lib/imap/db): cyrusdb error
May 11 20:29:00 h7185 master[15434]: about to exec /usr/lib/cyrus/bin/ctl_deliver
May 11 20:29:00 h7185 ctl_deliver[15434]: DBERROR db4: fatal region error detected; run recovery
May 11 20:29:00 h7185 ctl_deliver[15434]: DBERROR: dbenv->open '/var/lib/imap/db' failed: DB_RUNRECOVERY: Fatal error, run database recovery
May 11 20:29:00 h7185 ctl_deliver[15434]: DBERROR: init /var/lib/imap/db: cyrusdb error
May 11 20:29:00 h7185 master[15435]: about to exec /usr/lib/cyrus/bin/ctl_cyrusdb
May 11 20:29:00 h7185 ctl_cyrusdb[15435]: checkpointing cyrus databases
May 11 20:29:00 h7185 ctl_cyrusdb[15435]: DBERROR db4: fatal region error detected; run recovery
May 11 20:29:00 h7185 ctl_cyrusdb[15435]: DBERROR: dbenv->open '/var/lib/imap/db' failed: DB_RUNRECOVERY: Fatal error, run database recovery
May 11 20:29:00 h7185 ctl_cyrusdb[15435]: DBERROR: init /var/lib/imap/db: cyrusdb error
May 11 20:29:00 h7185 ctl_cyrusdb[15435]: done checkpointing cyrus databases
May 11 20:29:00 h7185 master[15431]: process 15435 exited, status 1
May 11 20:29:00 h7185 master[15431]: process 15434 exited, status 1
May 11 20:29:00 h7185 master[15431]: process 15433 exited, status 1
laut google deutet das auf ein problem mit berkeley db3 hin. eine direkte lösung habe ich aber nirgends gefunden. habe einfach die pakete aus YAST (SUSE9.0) installiert. nichtmal selber kompiliert...

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by schl » 2004-05-11 22:11

ok, für alle die das gleiche problem haben:

habe cyrus-imap in yast wieder deinstalliert. anschliessend habe ich den ordner /var/lib/imap gelöscht. dann cyrus-imap wieder per yast installiert. jetzt wurde der korrekte inhalt von /var/lib/imap installiert. cyrus läuft jetzt ohne murren...

sCHL

schl
Posts: 343
Joined: 2003-02-05 11:26
Location: München/Unterschleißheim

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by schl » 2004-05-13 12:51

so, habe jetzt noch ein bisschen probiert. es möchte aber nicht laufen. die auslieferung direkt an cyrus klappt ohne probleme. erst wenn das procmail dazwischen geschaltet wird. hängt sich die sache auf (siehe fehlermeldungen im ersten post)

ich hatte mir erhofft, durch die integration von procmail zu erreichen, dass ich z. B. spammails in ein anderes postfach sortieren lassen kann und dass auch die speziellen userpref mit einbezogen werden können. wenn ich direkt an cyrus ausliefere wird das wohl nicht klappen. oder gibt es da eine ähnliche möglichkeit. habe das folgendermaßen konfiguriert:

Postfix-Spamassassin-Howto

wenn jemand alterntiven kennt, würde ich die auch gern kennenlernen :-)

danke sCHL

crackmasterflash
Posts: 22
Joined: 2002-07-05 09:28

Re: Postfix -> Procmail -> Cyrus funktioniert nicht

Post by crackmasterflash » 2004-07-22 15:20

@sCHL

das hilft dir zar nicht weiter aber ich hänge an der selben stelle