PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zahle 20 Euro: Problem mit Procmail, bzw. wie kann ich Filtern?



tHaHooL
06.06.04, 11:11
Da ich jetzt wirklich nicht mehr weiter weiss und ich hier einen Mailserver habe, der dringend laufen muss, biete ich hier 20 Euro an demjenigen der mir hilft es auf die Reihe zu bekommen.

Mein System:
SuSE 9.1
Postfix
cyrus-imap
fetchmail

Ich habe in /etc/ die Datei "fetchmailrc" in der folgendes steht:

poll "post.strato.de"
protocol POP3
user "test1@meinedomain.de"
there with password "ehklar"


Wenn ich dies nun mit dem Befehl "fetchmail -f /etc/fetchmailrc" abrufe, landen die Mails allesamt im imap Postfach vom root.

Ich würde aber gerne "procmail" dazwischenschalten, da bei dem Postfach "test1@meinedomain.de" viele verschiedene Email-Adressen zusammenlaufen und diese müssen nun auf die einzelnen User verteilt werden.

Ich möchte z. B. die Adresse test2@meinedomain.de (die aber im Postfach von test1@meinedomain.de landet) so filtern, dass die Mail beim benutzer "user1" in seinem imap Postfach ankommt.

dafür hab ich folgendes in eine ".procmailrc" geschrieben:

logfile=/var/log/procmail/procmail.log
deliver=/usr/lib/cyrus/bin/deliver

:0:
*^TO.*test2@meinedomain.de
|/usr/lib/cyrus/bin/deliver -a -m user.user1

...

Nur jetzt stellt sich für mich die Frage:

* Wie kann ich Fetchmail sagen, dass die Mails mittels Procmail gefiltert werden? oder werden die von Haus aus erst zum Postfix geschickt und ich muss Postfix sagen, dass sie mit Procmail gefiltert werden sollen?

* Wo muss die .procmailrc stehen? Kann ich die eigentlich auch in /etc/ reinkopieren oder muss die zwingend im Userverzeichniss liegen? Da die Einstellungen ja eigentlich gar nicht userbezogen sind, wärs mir lieber in /etc

* Ist in der main.cf von Postfix auch etwas wichtiges zu beachten?

blauerpeti
06.06.04, 11:21
die Datei "fetchmailrc" mal erweitern:
#Optionen
to "user"
...damit landen die emails im userpostfach

oder...
#Optionen
keep
mda /usr/bin/procmail

geronet
06.06.04, 11:29
Da ich jetzt wirklich nicht mehr weiter weiss und ich hier einen Mailserver habe, der dringend laufen muss, biete ich hier 20 Euro an demjenigen der mir hilft es auf die Reihe zu bekommen.


Spend mal lieber was für's Forum wenn du schon soviel locker machst.

tHaHooL
06.06.04, 11:30
Das hab ich auch schon ausprobiert, wenn ich einen user eingebe, dann langen aber ALLE mails bei diesem User und ich kann wieder nicht filtern.

Wenn ich

mda /usr/bin/procmail

eingebe, dann landen die Mails irgendwo... keine Ahnung wo... :confused:
So hätt ich mir das nämlich auch vorgestellt mit dem "mda /usr/bin/procmail", nur dann braucht ja procmail noch seine .procmailrc damit er überhaupt filtern kann. Und die funktioniert weder im Homelaufwerk noch in /etc

Kann ich in der fetchmailrc vielleich neben der Weiterleitung zu Procmail auch gleich den Ort der .procmailrc mitangeben?

tHaHooL
06.06.04, 11:32
@gernonet
Ich zahl auch gern ans Forum, aber ich muss das jetzt hinbekommen, dass der Mist läuft :eek:

geronet
06.06.04, 11:34
Kannst du doch direkt angeben:

procmail [-ptoY] [-f fromwhom]
[parameter=value | rcfile] ...

tHaHooL
06.06.04, 11:43
wie soll das dann fertig aussehen?

so?

poll "post.strato.de"
protocol POP3
user "test1@meinedomain.de"
there with password "ehklar"
mda /usr/bin/procmail [ptoY] [-f /etc/.procmailrc]
[parameter=value | /etc/.procmailrc]

geronet
06.06.04, 11:47
Nein, so:

mda /usr/bin/procmail /etc/.procmailrc

tHaHooL
06.06.04, 11:52
Auf das bin ich auch schon gekommen, aber da passiert folgendes:

server01:/ # fetchmail -f /etc/fetchmailrc
fetchmail:/etc/fetchmailrc:8: syntax error at /etc/.procmailrc
server01:/ #

geronet
06.06.04, 11:57
Ahso, dann mal so:

mda "/usr/bin/procmail /etc/.procmailrc"

tHaHooL
06.06.04, 12:05
Ok, das funktioniert. Nun landet die Mail aber wieder irgendwo, nur nicht im imap Postfach vom user1.

Auch das Logfile in /var/log/procmail/procmail.log schreibt er nicht. Das Verzeichnis "procmail" in /var/log hab ich angelegt, die "procmail.log" müsste procmail ja dann schreiben oder? Da ist bisher keine Datei drin...

Hier nochmal meine .procmail:

logfile=/var/log/procmail/procmail.log
deliver=/usr/lib/cyrus/bin/deliver

:0
*^TO.*test2@meinedomain.de
|/usr/lib/cyrus/bin/deliver -a -m user.user1

---

Jetzt kanns ja nicht mehr allzu weit fehlen (hoff ich zumindest ;))

geronet
06.06.04, 12:09
Hat die procmail.log bzw. das Verzeichnis entsprechende Rechte? Gib denen mal rwxrwxrwx (zum testen).

tHaHooL
06.06.04, 12:14
Hab dem Verzeichniss & dem File (welches ich jetzt erstellt habe) mal 777 zugewiesen. Steht nix drinnen...

Kann ich procmail irgendwo auf seine Funktionalität hin überprüfen, bzw eine Statusmeldung abfragen?

geronet
06.06.04, 12:24
Schreib mal VERBOSE rein..

tHaHooL
06.06.04, 12:57
server01:~ # fetchmail -f /etc/fetchmailrc
1 message for test1@meinedomain.de at post.strato.de (2769 octets).
reading message test1@meinedomain.de@post.strato.de:3 of 3 (928 octets) procmail: [14458] Sun Jun 6 14:53:21 2004
procmail: Assigning "deliver=/usr/lib/cyrus/bin/deliver"
procmail: Match on "(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^a-zA-Z])?).*test2@meinedomain.de"
procmail: Executing "/usr/lib/cyrus/bin/deliver,-a,-m,user.bw"
procmail: Assigning "LASTFOLDER=/usr/lib/cyrus/bin/deliver -a -m user.bw"
Subject: TESTMAIL
Folder: /usr/lib/cyrus/bin/deliver -a -m user.bw 1069
flushed
server01:~ #

User "bw" hat aber keine Mail :(

geronet
06.06.04, 13:06
Schreib mal in procmailrc rein dass er die Mail in eine Datei schreibt, wenn das funktioniert liegts wohl eher an cyrus.

tHaHooL
06.06.04, 13:10
Kannst Du mir sagen was ich in die .procmailrc eintragen muss, damit er sie in eine Datei schreibt?


:0
*^TO.*test2@meinedomain.de
??? was muss hier rein ???

geronet
06.06.04, 13:15
man procmailex
Erstes Beispiel.

tHaHooL
06.06.04, 13:26
Ich hab nur "scubafile" reingeschrieben... ich hoff des passt so...

server01:~ # fetchmail -f /etc/fetchmailrc
1 messages for test1@meinedomain.de at post.strato.de (2765 octets).
reading message test1@meinedomain.de@post.strato.de:3 of 3 (924 octets) procmail: [14929] Sun Jun 6 15:21:59 2004
procmail: Assigning "deliver=/usr/lib/cyrus/bin/deliver"
procmail: Match on "(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^a-zA-Z])?).*test2@meinedomain.de"
procmail: Assigning "LASTFOLDER=scubafile"
procmail: Opening "scubafile"
procmail: Acquiring kernel-lock
Subject: test
Folder: scubafile 1064
flushed
server01:~ #

wo soll ich jetzt dieses "scubafile" finden?
find / -name scubafile* hat nichts ergeben....

tHaHooL
06.06.04, 13:53
Hier mal meine main.cf von Postfix, vielleicht läuft da ja was falsch:

# +++ POSTFIX KONFIGURATION +++

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
myhostname = server01
myorigin = $mydomain
mynetworks = 192.168.1.0/24, 127.0.0.0/8
relayhost = post.strato.de
default_transport = smtp
# alias_maps = hash:/etc/postfix/canonical
# alias_database = hash:/etc/aliases
# virtual_maps = hash:/etc/postfix/virtual
# virtual_alias_maps = hash:/etc/postfix/virtual
mailbox_command = /usr/cyrus/bin/deliver
mailbox_transport = cyrus
fallback_transport = cyrus
luser_relay =$root@server01

smtpd_banner = $myhostname ESMTP
debug_peer_level = 2
debugger_command =
PATH=/usr/bin/:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = maildrop
manpage_directory = /usr/share/man
sample_directory = /etc/postfix
readme_directory = /usr/share/doc/packages/postfix/README_FILES

schnebeck
06.06.04, 15:34
Dann will ich auch mal meinen Senf dazugeben.

Zunächst muss ich meinen üblichen Spruch loslassen: Vergiss fetchmail - nimm getmail! Mit fetchmail wird es dir früher oder später passieren, dass du irgendwann keine Mails mehr abholen kannst, weil fetchmail sich weigert. Diese spezielle Mail musst du dann mühselig mit deinem Mailclient von Hand verarbeiten, damit fetchmail wieder arbeitet - bis zur nächsten Problemmail. Diese Probleme sind seit langer Zeit bekannt und deswegen benutzt man fetchmail besser _nicht_. Die Alternative ist das problemlose getmail und dessen Konfigurationsdatei /etc/getmailrc findest du hier:

[default] # This section provides default arguments and values,
# and variables which can be used in other sections
verbose = 1 # Be verbose by default
readall = 1 # Retrieve only new messages by default
delete = 1 # Delete mail after retrieval by default
message_log = /var/log/getmail.log # Log message retrieval and delivery to this file by default
timeout = 240 # TCP timeout value; increase if on a poor connection or

[mein Postfach] # Simple configuration for a single-user POP3 mailbox
server = mein.ISP.pop3.server
username = mein.user.name
password = "mein Passwort"
use_apop = 0 # Use APOP authentication for this account instead of
# cleartext PASS
postmaster = "|/usr/bin/procmail 2>&1"
no_delivered_to = 1 # Don't add a Delivered-To: header for this mailbox
no_received = 1:

HTH

Thorsten

slime
07.06.04, 18:27
Kannst Du mir sagen was ich in die .procmailrc eintragen muss, damit er sie in eine Datei schreibt?


:0
*^TO.*test2@meinedomain.de
??? was muss hier rein ???
bei mir sieht das etwa so aus

*^TO.egal@egal
~/mail/egalmail

und in letzterer datei landet die mail dann auch.

tHaHooL
11.06.04, 12:44
Welcher User muss den in der fetchmailrc Eigestellt sein, damit procmail die Mail zum filtern überhaupt erhält?

Ich habe mir inzwischen so beholfen, in dem ich auf dem Mailserver von Strato einzelne Accounts angelegt habe, diese dann mit fetchmail hole und sie direkt in die Userpostfächer legen lasse.

Das ist natürlich nur vorübergehend, aber es muss jetzt im Moment so weiterlaufen.

Ich rufe jetzt aber unter anderem ein Testpostfach ab und dies soll procmail bekommen - jetzt weiss ich nicht welchen User ich in der fetchmail eintragen soll, damit die Mail auch bei procmail ankommt.