PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : postgrey arbeitet nicht



Manfred Werner
27.01.07, 12:53
Hallo Forum,
ich habe diesesmal ein problem mit postgrey und komme hier leider nicht weiter.
Auf meinem Mailserver habe ich postgrey installiert.
Der Beutzer postgrey ist angelegt, der Daemon lauscht bei mir auf dem Port 60000. und gestartet habe ich postgrey über den Befehl.

/usr/sbin/postgrey --inet=60000 -daemonize
ein ps -ax | grep postgrey bringt ergibt

7697 ? Ss 0:00 /usr/sbin/postgrey --inet=60000 --daemonize
die Kontrolle mit Telnet auf dem Port 60000

# telnet localhost 60000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Ach ja der Eintrag in der main.cf lautet
smtpd_recipient_restrictions=permit_auth_destinati on, permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000, reject

ein lockers tail -f /var/log/mail bringt noch folgende Ausgabe


Jan 27 13:47:10 DE223310x00001 postgrey[7797]: Process Backgrounded
Jan 27 13:47:10 DE223310x00001 postgrey[7797]: 2007/01/27-13:47:10 postgrey (type Net::Server::Multiplex) starting! pid(7797)
Jan 27 13:47:10 DE223310x00001 postgrey[7797]: Binding to TCP port 60000 on host localhost
Jan 27 13:47:10 DE223310x00001 postgrey[7797]: Setting gid to "65533 65533"
Jan 27 13:47:10 DE223310x00001 postgrey[7797]: Setting uid to "95"

Soweit so gut. Eigentlich sollte postgrey nun auch laufen. Tut es aber nicht. Nach wi vor werden alle Mails einfach ohne policy check durchgeleitet.
Hier ist nochmal die Ausgabe von tail -f /var/log/mail nach einem Reboot und dem Eingang einer Testmail


Jan 27 13:54:51 DE223310x00001 postfix/qmgr[7597]: AE0CA2168E: removed
Jan 27 13:58:10 DE223310x00001 postfix/anvil[7883]: statistics: max connection rate 1/60s for (smtp:10.112.242.21) at Jan 27 13:54:43
Jan 27 13:58:10 DE223310x00001 postfix/anvil[7883]: statistics: max connection count 1 for (smtp:10.112.242.21) at Jan 27 13:54:43
Jan 27 13:58:10 DE223310x00001 postfix/anvil[7883]: statistics: max cache size 2 at Jan 27 13:54:50
Jan 27 14:00:14 DE223310x00001 postfix/master[7589]: terminating on signal 15
Jan 27 14:02:16 DE223310x00001 postgrey[2798]: Process Backgrounded
Jan 27 14:02:16 DE223310x00001 postgrey[2798]: 2007/01/27-14:02:16 postgrey (type Net::Server::Multiplex) starting! pid(2798)
Jan 27 14:02:16 DE223310x00001 postgrey[2798]: Binding to TCP port 60000 on host localhost
Jan 27 14:02:16 DE223310x00001 postgrey[2798]: Setting gid to "65533 65533"
Jan 27 14:02:16 DE223310x00001 postgrey[2798]: Setting uid to "95"
Jan 27 14:02:38 DE223310x00001 postfix/postfix-script: starting the Postfix mail system
Jan 27 14:02:38 DE223310x00001 postfix/master[3505]: daemon started -- version 2.2.9, configuration /etc/postfix
Jan 27 14:05:14 DE223310x00001 postfix/smtpd[3779]: connect from unknown[10.112.242.21]
Jan 27 14:05:15 DE223310x00001 postfix/smtpd[3779]: 6AABF1B5C2: client=unknown[10.112.242.21]
Jan 27 14:05:15 DE223310x00001 postfix/cleanup[3783]: 6AABF1B5C2: message-id=<BAY105-F160E18C3B9490B3905ACD7CDA10@phx.gbl>
Jan 27 14:05:15 DE223310x00001 postfix/smtpd[3779]: disconnect from unknown[10.112.242.21]
Jan 27 14:05:15 DE223310x00001 postfix/qmgr[3526]: 6AABF1B5C2: from=<serverus01@hotmail.com>, size=2918, nrcpt=1 (queue active)
Jan 27 14:05:16 DE223310x00001 postfix/lmtp[3785]: 6AABF1B5C2: to=<werner@DE223310x00002.Autohaus-Weinheim.de>, orig_to=<manfred.werner@Autohaus-weinheim.de>, relay=/var/lib/imap/socket/lmtp[/var/lib/imap/socket/lmtp], delay=1, status=sent (250 2.1.5 Ok)
Jan 27 14:05:16 DE223310x00001 postfix/qmgr[3526]: 6AABF1B5C2: removed


Wer kann mit einen Tipp geben ??

Manfred

michael.sprick
27.01.07, 13:34
Ich vermute mal, dass die Reihenfolge der smtpd_recipient_restrictions nicht richtig ist. Überhaupt sollte permit_auth_destination nicht vorne stehen, denn wenn eine eingehende Mail einen Empfänger trägt, der auf $inet_interfaces, $mydestination, $virtual_alias_domains oder $virtual_mailbox_domains passt, wird sie ja direkt zugestellt. So handelst Du Dir vermutlich jede Menge Spam ein.

Versuch es mal so herum:


smtpd_recipient_restrictions=
permit_mynetworks,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:60000,
permit_auth_destination,
reject


Ansonsten würde ich mir nochmal die Funktion der einzelenen Regeln durchlesen. Da ist noch Optimierungspotential ;)

Manfred Werner
29.01.07, 08:58
Hallo Miachael,

danke für die Antwort.
Das war's. !! :) Postgrey arbeitet nun genau so wie es soll. :D

Manfred

Manfred Werner
29.01.07, 15:17
Hallole
leider muss ich den Thread nochmal öffnen.
Postgres lief ca. 2 stunden. Seitdem werden alle mails ohne Greylistinmg duchgeleitet. In der main.cf sieht der erfotderliche eintrag jetzt so aus

smtpd_recipient_restrictions=permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000, permit_auth_destination, reject


auch ein neustart von postfix bzw postgrey bringt nichts. wenn ich postgrey mit

rcpostgrey stop done
und
rcpostgrey start done
erfolgt kein Eintrag in /var/log/mail

:confused:

Manfred

michael.sprick
29.01.07, 16:51
Hallo Manfred,

postgrey arbeitet ja so, dass jede neue Kombination aus Absender+Server+Empfänger (glaubich) erstmal abgelehnt wird.
Per Default wird diese Kombination dann für 300 Sekunden auf die "Graue Liste" gesetzt. Erfolgt nach dieser Zeit ein erneuter Versuch des Servers, diese Mail auf Deinem Server abzugeben, so wird diese Kombination in Zukunft sofort akzeptiert.

Eine zweite Mail mit dem Muster Absender+Server+Empfänger wird also unmittelbar zugestellt.

Kannst Du ausschließen, dass die Mails, die nun ohne postgrey zugestellt werden, nicht schon vorher mal geprüft worden sind?

Manfred Werner
30.01.07, 07:36
Hallo Michael,
danke für die Info.
ich hatte wohl ein andes Problemchen.
Meine Postgreyinstallation erfolgte über ein rpm und nicht von Hand.
In der Standarteinstellung des Paketbauers horcht Postgrey nicht auf dem Port 60000 sondern auf dem unix socket.
Ich habe dann ein´fach mal postgrey entfernt und neu eingespielt. In der main.cf hab ich dann den Eintrag wie folgt geändert:

smtpd_recipient_restrictions=
permit_mynetworks,
reject_unauth_destination,
check_policy_service unix:/var/spool/postfix/postgrey/socket,
permit_auth_destination,
reject


Bis jetzt funktioniert es mal (seit einer 1/2 Stunde) :D

Manni

Manfred Werner
30.01.07, 14:13
Hallole,
also jetzt gehts weiter,
Hab eine Fehlermeldung gefunden.
im Logfile /var/log/mail.warn ist folgendes eingetragen:

Jan 30 14:41:46 DE223310x00001 postfix/smtpd[12143]: warning: connect to /var/spool/postfix/postgrey/socket: No such file or directory

Daraus schließe ich dass postgrey seinen Socket nicht mehr findet.
Die Datei ist aber definitiv vorhanden.

DE223310x00001:/var/spool/postfix/postgrey # ls -al /var/spool/postfix/postgrey/
total 166
drwx--x--x 2 postgrey postgrey 304 Jan 30 14:55 .
drwxr-xr-x 17 root root 408 Jan 30 08:04 ..
-rw------- 1 postgrey nobody 24576 Jan 30 14:55 __db.001
-rw------- 1 postgrey nobody 278528 Jan 30 14:55 __db.002
-rw------- 1 postgrey nobody 98304 Jan 30 14:55 __db.003
-rw------- 1 postgrey nobody 16384 Jan 30 14:55 __db.004
-rw------- 1 postgrey nobody 10485760 Jan 30 15:01 log.0000000001
-rw------- 1 postgrey nobody 24576 Jan 30 14:41 postgrey.db
-rw------- 1 postgrey nobody 0 Jan 30 08:04 postgrey.lock
-rw------- 1 postgrey nobody 8192 Jan 30 14:41 postgrey_clients.db
srw-rw-rw- 1 postgrey nobody 0 Jan 30 14:55 socket


Wie gesagt Postgrey lief von heute morgen bis 14:41
Allerdings habe ich noch ein par restriktionen hinzugefügt. Die main cf sieht an der gänderten stelle nun so aus:

smtpd_recipient_restrictions=
reject_non_fqdn_recipient,
reject_non_fqdn_sender,
permit_mynetworks,
reject_unauth_destination,
reject_invalid_hostname,
check_policy_service unix:/var/spool/postfix/postgrey/socket,
permit_auth_destination,
reject

Auch ein Neustarten von Postfix und Postgréy bracht nichts.
Habe jetzt nochmal postgrey angehalten, das rpm mit

rpm -e postgrey
gelöscht und mit

rpm -Uvh
neu eingespielt. Jetzt geht's wieder. Mal sehen wie lage alles läuft wenn ich nichts mehr an der main.cf ändere alles einfach mal so laufen lasse.

Wer hat nochmal einen Tipp??

Manfred

Manfred Werner
31.01.07, 14:21
Hallo Ihr lieben,
nun konnte ich den Fehler etwas einkreisen.
Postgrey läuft genau so lange bis es seine log Datei bereinigt.
Im Maillog steht
Jan 31 14:37:17 DE223310x00001 postgrey[19857]: cleaning up old logs...

genau zur gleichen Zeit erfolgte noch ein Greylisting

Jan 31 14:37:17 DE223310x00001 postfix/smtpd[22161]: NOQUEUE: reject: RCPT from unknown[10.112.242.21]: 450 <xx-xx@xx-xx.de>: Recipient address rejected: Greylisted for 500 Seconds; from=<birol.orhan@de338040.vapn.de> to=<xx-xx@xx-xx.de> proto=ESMTP helo=<ssi02out.vapn.de>

Danach erfolgte kein Greylistung mehr .. :confused:

Wer hat noch einen Tip??

Manfred

Manfred Werner
01.02.07, 15:31
Hallöchen,

ich glaube jetzt hab ich's
das rpm von sourceforge.net hab ich deinstalliert, ich vermute mal es passte nicht für meine Disti ( SLES10) :ugly: .

dann mit

useradd -d /var/spool/postfix/postgrey postgrey
den Benutzer postgrey angelegt.
Nun mit
chown postgrey nobody /var/spool/postfix/postgrey das Verzeichnis dem Benutzer postgrey zuordnen.

Danach hab ich mir von http://isg.ee.ethz.ch/tools/postgrey die aktuelle Version geholt.
Datei entpacken, in das entpackte Verzeichnis wechseln und die Dateien postgrey_whitelist* mit

cp postgrey_whithelist* /etc/postfix/ nach /etc/postfix/ kopieren.
Jetzt noch postgrey nach /usr/sbin/ kopieren

cp postgrey /usr/sbin
und schon kann postgrey gestartet werden.
Mitlerweile habe ich wieder auf tcp umgestellt und auch die main.cf wieder angepasst.

Nach einiger Suche fand ich dann auch noch ein Startscipt von James. Dieses habe ich für meine Zwecke angepasst. und unter /etc/init.d/postgrey abgelegt. Nun noch ein Link dieser Datei nach /sbin/rcpostgrey
ln -s /etc/init.d/postgrey /sbin/rcpostgreyund postgrey kann nach Susemanier gestartet, gestopt und neugestartet werden. Hier ist mal meine Version:

#!/bin/bash
#
# Author: james at p800.info, based on template from source package
# Modified: Manfred
#
# /etc/init.d/postgrey
# and its symbolic link
# /sbin/rcpostgrey
#
### BEGIN INIT INFO
# Provides: postgrey
# Required-Start: $postfix
# Required-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Description: postgrey - greylisting implementation
### END INIT INFO

. /etc/rc.status

# Determine the base and follow a runlevel link name.
base=${0##*/}
link=${base#*[SK][0-9][0-9]}

EXE=/usr/sbin/postgrey
NAME=postgrey

# Force execution if not called by a runlevel directory.
test -x $EXE || exit 0

case "$1" in
start)
echo -n "Starting $NAME "
startproc $EXE -d --user=$NAME --inet=60000 --delay=600 --greylist-text="Greylisted for 600 Seconds" --auto-whitelist-clients=25
rc_status -v
;;
stop)
echo -n "Shutting down $NAME "
killproc -TERM $EXE
rc_status -v
;;
restart)
echo -n "Restarting Service $NAME "
killproc -TERM $EXE
startproc $EXE -d --user=$NAME --inet=60000 --delay=600 --greylist-text="Greylisted for 600 Seconds" --auto-whitelist-clients=25
rc_status -v
;;
status)
echo -n "Checking for $NAME "
checkproc $EXE
rc_status -v
;;
*)
echo "Usage: $0
{start|stop|restart|status}"
exit 1
esac
rc_exit

Das originale Startscipt findet Ihr hier:http://lists.puremagic.com/pipermail/greylist-users/2004-August/000694.html
In meiner Version habe ich mehr Optionen für den Start von postgrey eingebaut.
Alle Optionen können auch mit
postgrey --help aufgerufen werden.

Ganz zum Schluss hab ich dann Postgrey noch mit YAST im Runleveleditor aktiviert damit es beim Neustart automaitsch aktiviert wird.

Fazit:
Man soll sich halt nicht immer auf rpm anderer Verlassen
und sich besser in die Materie die man bearbeiten möchte einlesen.:D

Manni

michael.sprick
02.02.07, 08:11
Danke für die super Rückmeldung.
Schön, dass es jetzt funktioniert.

Dann mal happy greylisting ;)