PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : postfix/fetchmail: Probleme beim Konfigurieren eines catchalls



Krebstierchen
26.09.07, 16:29
Hallo Community

ich versuche momentan verzweifelt meinem Mailserver catchall beizubringen. Hierzu hab ich mich an dieser Readme (http://www.postfix.org/VIRTUAL_README.html#virtual_mailbox) orientiert.

Bisher war es so:
- auf dem ISP hat jeder seinen eigenen Account, dieser wird regelmäßig von Fetchmail abgeholt
- die Mails landen im Postfix, werden auf Viren und Spam gefiltert (amavis)
- zuletzt sortiert cyrus die Mails in seine IMAP Postfächer ein

Dieses System hat super funktioniert.
Allerdings haben durch den exzessiven Gebrauch von HowTos und der Rumkonfiguriererei mein Mailsystem und ich etwas gelitten.
Mein Hauptproblem ist, dass ich nicht weiß, wer eigentlich wann rausfiltert, an wen die Mail gerichtet ist. Fetchmail? Postfix? .... Da ich mich recht kurzfristig mit diesem catchall beschäftigen muss, habe ich noch nicht soviel Hintergrundwissen darüber, wie ich gerne hätte (und inzwischen auch nicht die Zeitreserven, mir dieses zu erarbeiten :().

Nun ja, so sehen meine Konfigurationen aus, vielleicht kann jemand meinen Fehler finden (vermutlich ist er total offensichtlich :)):

Fetchmailrc:

poll post.strato.de
proto pop3
auth password
envelope "X-Envelope-To:"
user "all@domain.de"
pass "passwort"
is *


main.cf


#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = domain.de
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = domain.de localhost.localdomain localhost
relayhost = post.strato.de
mynetworks = 127.0.0.0/8 192.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
mailbox_transport = cyrus
content_filter = vscan:[127.0.0.1]:10024
inet_protocols =all
fallback_relay =
#virtual_alias_maps = ldap:/etc/postfix/ldap/virtual_forwardings.cf
virtual_alias_maps = hash:/etc/postfix/virtual
#virtual_mailbox_domains = ldap:/etc/postfix/ldap/virtual_domains.cf
virtual_mailbox_domains = domain.de
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
#virtual_mailbox_base = /var/spool/cyrus/mail
#virtual_uid_maps = ldap:/etc/postfix/ldap/virtual_uid.cf
#virtual_gid_maps = ldap:/etc/postfix/ldap/virtual_gid.cf
#virtual_gid_maps = static:5000
#virtual_uid_maps = static:5000
virtual_transport = maildrop:cyrus


Die ldap Einträge sind Überbleibsel von Versuchen, das ganze mit LDAP zu machen... Hat aber auch nicht geklappt, wie es sollte :(

/etc/postfix/virtual

postmaster@domain.de stefanie

/etc/postfix/vmailbox

name1@domain.de name1
stefanie@domain.de stefanie
name3@domain.de name3
name4@senso2.de name4
xyz@senso2.de stefanie


An der Cyrusconfig habe ich nichts verändert, ich denke aber, da muss ich auch nichts ändern.

Durch verschiedenes rumprobieren (aktivieren und deaktivieren der virtual_... Einträge) habe ich ihn schon soweit bekommen, das Postfix die Mails annimmt. Allerdings gehen diese dann wieder an den Sender zurück:

mail.log:

Sep 26 16:04:28 domain cyrus/lmtpunix[4518]: verify_user(user.fetchmail) failed: Mailbox does not exist
Sep 26 16:04:28 domain postfix/pipe[4516]: A725C26B669: to=<fetchmail@localhost>, relay=cyrus, delay=0.08, delays=0.04/0/0/0.04, dsn=5.6.0, status=bounced (data format error. Command output: fetchmail: Mailbox does not exist )
Sep 26 16:04:28 domain postfix/cleanup[4511]: BAFB226B666: message-id=<20070926140428.BAFB226B666@domain>
Sep 26 16:04:28 domain postfix/qmgr[4503]: BAFB226B666: from=<>, size=4174, nrcpt=1 (queue active)
Sep 26 16:04:28 domain postfix/bounce[4519]: A725C26B669: sender non-delivery notification: BAFB226B666
Sep 26 16:04:28 domain postfix/qmgr[4503]: A725C26B669: removed


fetchmail ist der user unter dem Fetchmail das catchall abholt. Der hat natürlich kein Postfach bei cyrus. Eigentlich dachte ich, mittels der Datei vmailbox bringe ich Postfix die "richtigen" Empfänger bei... Hmmm.

Falls noch mehr Informationen nötig sein sollten, werde ich diese natürlich gerne posten.

Vielen Dank schonmal im Vorraus (schon allein fürs Lesen :D)

Liebe Grüße, Steffi

balduin222
26.09.07, 17:50
Hallo,

also was ich hier vermisse ist ein Mailfilter wie z.B. Procmail. Die Reihenfolge sieht dann so aus:

fetchmail --> postfix --> procmail --> postifx --> irgendweche filter, amavis & co.

Der procmail muss in der /etc/postfix/main.cf eingebunden werden.

Es gibt natürlich auch andere Filter wie Sieve oder Maildrop, aber die kenne ich auch nur vom Namen her. Der Procmail tut seine Dienste gut und man kann so gut wie alles im Mail Header Filtern und weiterleiten etc.

Gruß
balduin222

Pingu
26.09.07, 18:24
Also die fetchmailrc sieht schon einmal gut aus (zum Vergleich meine siehe unten). Ansonsten kann ich nicht viel sagen, da ich sendmail und Apple Mail Server habe.
set syslog
set daemon 900
set postmaster headquarters
poll ISP via pop.isp.example.net protocol pop3 tracepolls localdomains e-mail example.org example.com example.de:
envelope 2 "Delivered-To:" qvirtual "alias-"
user "email-user" password "email-password" to
"user1"="headquarters"
"user2"="headquarters"
"user3"="headquarters"
* here smtphost localhost/627 smtpaddress example.org antispam 451 expunge 20


Es gibt ein paar Umschreibungen, weil ein paar Nutzer keine direkten emails bekommen sollen/wollen. Lokal habe ich den AMS auf Port 627 verbannt. Da mein ISP neben X-Envelope-To: auch Delivered-To: hinzufügt, habe ich mich damals dafür entschieden. Dafür muss ein Teil der Kennung entfernt werden. Nach 20 email, soll er erst einmal der Status zurück schreiben (abgeholt), damit falls die Verbindung abbricht oder andere Fehler, nicht zu viele Doubletten entstehen. Wobei ich den Wert inzwischen auch mal wieder höher setzen könnte.

Krebstierchen
27.09.07, 07:55
Okay, ich werde es mal mit Procmail versuchen. Irgendetwas derartiges hab ich auch vermutet... weil ich eben nirgends die Mails wirklich "sortiere".
Hätte ich gewusst das ich es noch einmal brauche, hätte ich es damals nicht deinstalliert :) Bevor ich auf Cyrus umgestiegen bin, sah meine Reihenfolge noch so aus:

fetchmail -> postfix -> procmail -> dovecot

Allerdings werden die Mails mit der jetzigen Konfiguration nicht beim procmail ankommen.
Wenn Fetchmail die Mails abruft, versucht er sie per SMTP an postfix weiterzugeben, das klappt aber scheinbar nicht... Wenn ich die ganzen virtual_... Einträge deaktiviere, funktioniert die Übergabe wieder.
Hmmm, vielleicht kann ich die auch weglassen, wenn ich jetzt zusätzlich procmail benutze?

Krebstierchen
27.09.07, 13:01
So. Nachdem ich nun Procmail implementiert habe, will es immernoch nicht funktionieren. Ich habe mich grob an diesem Howto orientiert: http://www.postfix-howto.de/konfiguration/procmail.htm
Die Übergabe der Mails an Procmail funktioniert, also scheint in der postfix master.cf alles okay zu sein. Ich denke in der procmailrc liegt immernoch ein Fehler, bzw. ich habe etwas vergessen.

procmailrc:

#Logkonfiguration: Details, Datei
LOGABSTRACT=all
LOGFILE=/var/log/procmail.log

#Variablen
DELIVERMAIL="/usr/sbin/cyrdeliver"
DAEMON="MAILER-DAEMON@domain.de"
SENDMAIL="/usr/sbin/sendmail -i -f \MAILER-DAEMON\@senso2.de -t $SENDER"

#Mailbox-zustellung
INBOX="$DELIVERMAIL -f $SENDER -a $USER $USER"

#Sortieren nach Empfängeradressen
#:0:
#* ^To.*stefanie@senso2.de
#/var/spool/cyrus/mail/s/user/stefanie

#Inbox Zustellung
:0w
| $INBOX


In der procmail.log steht folgendes:

procmail: Program failure (65) of "/usr/sbin/cyrdeliver"
procmail: Skipped "HOST"
Subject: test9
Folder: /var/mail/cyrus 2363


Warum funktioniert hier der cyrdeliver nicht? Muss da vielleicht etwas anderes eingetragen werden?

In der mail.log steht dazu noch folgendes:


Sep 27 12:01:47 senso2 postfix/smtpd[8971]: connect from localhost[127.0.0.1]
Sep 27 12:01:47 senso2 postfix/smtpd[8971]: F152D26B67F: client=localhost[127.0.0.1]
Sep 27 12:01:48 senso2 postfix/cleanup[8974]: F152D26B67F: message-id=<1527428528@web.de>
Sep 27 12:01:48 senso2 postfix/qmgr[8747]: F152D26B67F: from=<meine-mail@web.de>, size=1889, nrcpt=1 (queue active)
Sep 27 12:01:48 senso2 postfix/smtpd[8977]: connect from localhost[127.0.0.1]
Sep 27 12:01:48 senso2 postfix/smtpd[8977]: 1E12026B681: client=localhost[127.0.0.1]
Sep 27 12:01:48 senso2 postfix/cleanup[8974]: 1E12026B681: message-id=<1527428528@web.de>
Sep 27 12:01:48 senso2 postfix/qmgr[8747]: 1E12026B681: from=<meine-mail@web.de>, size=2379, nrcpt=1 (queue active)
Sep 27 12:01:48 senso2 postfix/smtpd[8977]: disconnect from localhost[127.0.0.1]
Sep 27 12:01:48 senso2 amavis[2967]: (02967-07) Passed BAD-HEADER, LOCAL [127.0.0.1] [87.188.103.100] <meine-mail@web.de> -> <fetchmail@localhost>, Message-ID: <1527428528@web.de>, mail_id: 4vqT8hjCj22E, Hits: -, queued_as: 1E12026B681, 124 ms
Sep 27 12:01:48 senso2 postfix/smtp[8975]: F152D26B67F: to=<fetchmail@localhost>, relay=127.0.0.1[127.0.0.1]:10024, delay=0.2, delays=0.06/0.01/0/0.12, dsn=2.6.0, status=sent (250 2.6.0 Ok, id=02967-07, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 1E12026B681)
Sep 27 12:01:48 senso2 postfix/qmgr[8747]: F152D26B67F: removed
Sep 27 12:01:48 senso2 cyrus/master[8982]: about to exec /usr/lib/cyrus/bin/lmtpd
Sep 27 12:01:48 senso2 postfix/smtpd[8971]: disconnect from localhost[127.0.0.1]
Sep 27 12:01:48 senso2 cyrus/lmtpunix[8982]: executed
Sep 27 12:01:48 senso2 cyrus/lmtpunix[8982]: accepted connection
Sep 27 12:01:48 senso2 cyrus/lmtpunix[8982]: lmtp connection preauth'd as postman
Sep 27 12:01:48 senso2 cyrus/lmtpunix[8982]: verify_user(user.fetchmail) failed: Mailbox does not exist
Sep 27 12:01:48 senso2 postfix/pipe[8979]: 1E12026B681: to=<fetchmail@localhost>, relay=procmail, delay=0.14, delays=0.05/0.02/0/0.08, dsn=2.0.0, status=sent (delivered via procmail service)
Sep 27 12:01:48 senso2 postfix/qmgr[8747]: 1E12026B681: removed

Das meiste davon sieht mir okay aus. Bis auf die Tatsache das er immernoch versucht die Mails an den user fetchmail zuschicken...
Ich weiß wirklich nicht mehr weiter. Kann mir jemand ein gutes HowTo hierzu empfehlen?

Grüße Steffi

balduin222
27.09.07, 14:04
Hi,

ich hab grad leider kein gutes Howto auf Lager. Aber bau doch mal den Cyrus komplett aus der procmailrc aus. Lass ihn einfach nur sortieren, sprich z.B.
:0
* ^(To:|Cc:).*stefanie@senso2.de
!stefanie@localhost

Somit würde Procmail alle Mails, die an dich gerichtet sind weiterleiten an stefanie@localhost. Und dann gehen die Mails direkt wieder an Postfix und der kann dann an Cyrus weitergeben. Der Procmail-Aufruf muss vor dem Cyrus Aufruf in die main.cf!

Grüße
balduin222