[Postfixbuch-users] MySQL und Restriction für gefälschtes EHLO
Christian Roessner
christian at roessner-net.com
Sa Jan 26 11:12:35 CET 2008
Hallo liebe Liste,
dank der grandiosen Hilfe von Uwe Drießen, hat sich mein Mail-Setup
stark verändert und ich habe versucht, möglichst alle Restrictions in
der smtpd_recipient_restrictions unterzubringen. Diese selbst ist so
strukturiert, dass
- Prüfe alles, was lokal zu prüfen geht
- Nimm dann evtl. MySQL-Abfragen hinzu
- Schließe mit Remote-Abfragen ab
in etwa eingehalten wird. Nun habe ich da einen kleinen Sonderfall:
smtpd_helo_restrictions =
permit_mynetworks
check_helo_access
btree:/etc/postfix/maps/sender_access_fakelocal,
proxy:mysql:/etc/postfix/mysql/check_helo_access.cf
Ich würde sehr gerne diesen Block ebenfalls entfernen und die
check_helo_access Angabe wie folgt benutzen:
smtpd_recipient_restrictions =
permit_mynetworks
reject_non_fqdn_recipient
reject_non_fqdn_sender
reject_unknown_recipient_domain
reject_unknown_sender_domain
reject_unverified_recipient
reject_unlisted_recipient
permit_tls_clientcerts
reject_unauthenticated_sender_login_mismatch
reject_sender_login_mismatch
permit_sasl_authenticated
reject_unauth_destination
check_client_access pcre:/etc/postfix/maps/dynip.pcre
check_client_access pcre:/etc/postfix/maps/greylist.pcre
reject_invalid_helo_hostname
reject_non_fqdn_helo_hostname
reject_unknown_helo_hostname
reject_unknown_client_hostname
reject_unknown_reverse_client_hostname
***** Hier soll sie hin *****
check_policy_service unix:private/policyd-spf
check_policy_service inet:127.0.0.1:12525
reject_rhsbl_sender dsn.rfc-ignorant.org
Und genau das klappt leider nicht mehr, weil dann folgende REJECTs im
Log zu finden sind:
Jan 25 23:21:42 srv1 postfix/smtpd[17361]: NOQUEUE: reject: RCPT from
fmmailgate05.web.de[217.72.192.243]: 554 5.7.1
<christian at roessner-net.com>: Recipient address rejected: You are not
roessner-net.com; from=<chrroessner at web.de>
to=<christian at roessner-net.com> proto=ESMTP helo=<fmmailgate05.web.de>
Bevor ich es jetzt vergesse:
Postfix-Version: 2.4.5-3ubuntu1
MySQL-Version: 5.0.45-1ubuntu3.1
System: Ubuntu Gutsy
Die Query sieht derzeit wie folgt aus:
cat /etc/postfix/mysql/check_helo_access.cf
user = syscp
password = ********
dbname = syscp
query = SELECT 'REJECT You are not %s' FROM panel_domains WHERE
domain="%s" LIMIT 1
hosts = unix:/var/run/mysqld/mysqld.sock
Bevor fragen aufkommen: Der Text wurde hier im Thunderbird leider
umgebrochen, steht aber in einer Zeile.
Das Layout der Tabelle:
*************************** 1. row ***************************
Field: id
Type: int(11) unsigned
Null: NO
Key: PRI
Default: NULL
Extra: auto_increment
*************************** 2. row ***************************
Field: domain
Type: varchar(255)
Null: NO
Key: MUL
Default:
Extra:
*************************** 3. row ***************************
Field: adminid
Type: int(11) unsigned
Null: NO
Key:
Default: 0
Extra:
*************************** 4. row ***************************
Field: customerid
Type: int(11) unsigned
Null: NO
Key: MUL
Default: 0
Extra:
*************************** 5. row ***************************
Field: aliasdomain
Type: int(11) unsigned
Null: YES
Key:
Default: NULL
Extra:
*************************** 6. row ***************************
Field: documentroot
Type: varchar(255)
Null: NO
Key:
Default:
Extra:
*************************** 7. row ***************************
Field: ipandport
Type: int(11) unsigned
Null: NO
Key:
Default: 1
Extra:
*************************** 8. row ***************************
Field: isbinddomain
Type: tinyint(1)
Null: NO
Key:
Default: 0
Extra:
*************************** 9. row ***************************
Field: isemaildomain
Type: tinyint(1)
Null: NO
Key:
Default: 0
Extra:
*************************** 10. row ***************************
Field: iswildcarddomain
Type: tinyint(1)
Null: NO
Key:
Default: 0
Extra:
*************************** 11. row ***************************
Field: subcanemaildomain
Type: tinyint(1)
Null: NO
Key:
Default: 0
Extra:
*************************** 12. row ***************************
Field: caneditdomain
Type: tinyint(1)
Null: NO
Key:
Default: 1
Extra:
*************************** 13. row ***************************
Field: zonefile
Type: varchar(255)
Null: NO
Key:
Default:
Extra:
*************************** 14. row ***************************
Field: parentdomainid
Type: int(11) unsigned
Null: NO
Key: MUL
Default: 0
Extra:
*************************** 15. row ***************************
Field: openbasedir
Type: tinyint(1)
Null: NO
Key:
Default: 0
Extra:
*************************** 16. row ***************************
Field: openbasedir_path
Type: tinyint(1)
Null: NO
Key:
Default: 0
Extra:
*************************** 17. row ***************************
Field: safemode
Type: tinyint(1)
Null: NO
Key:
Default: 0
Extra:
*************************** 18. row ***************************
Field: speciallogfile
Type: tinyint(1)
Null: NO
Key:
Default: 0
Extra:
*************************** 19. row ***************************
Field: specialsettings
Type: text
Null: NO
Key:
Default:
Extra:
*************************** 20. row ***************************
Field: deactivated
Type: tinyint(1)
Null: NO
Key:
Default: 0
Extra:
Hier mal ein Sample:
*************************** 1. row ***************************
id: 2
domain: roessner-net.com
adminid: 1
customerid: 1
aliasdomain: NULL
documentroot: /var/www/kunden/croessner/roessner-net.com/
ipandport: 7
isbinddomain: 1
isemaildomain: 1
iswildcarddomain: 0
subcanemaildomain: 1
caneditdomain: 1
zonefile: roessner-net.com.zone
parentdomainid: 0
openbasedir: 1
openbasedir_path: 0
safemode: 1
speciallogfile: 0
specialsettings:
deactivated: 0
Nun komme ich dann auch schon gleich mal zur Frage ;-)
Kann mir irgendwer helfen, die Query korrekt zu formulieren, damit das
alles so klappt, wie ich mir das oben gedacht habe? Natürlich läuft das
hier gerade auf einem Low-Traffic-Server und ich könnte vermutlich auch
mit Flatfiles arbeiten, aber genau das Setup läuft unter Hochlast bei
einem Kunden und ich möchte liebend gerne, dass der MySQL-Server nicht
für jeden sch*** Spammer kontaktiert werden muss.
http://www.accounts.de/cgi-bin/mailgraph.cgi
um nur mal ein Beispiel zu zeigen.
Ich danke euch vielmals im Voraus!
Gruß
Christian
--
Roessner Network Solutions (R.N.S.)
Licher Str. 19a
35394 Gießen
USt-IdNr.: DE225643613
Fon: +49 641 2097252
Fax: +49 641 2097253
Mobil: +49 171 3611230
URL: http://www.roessner-net.com/
PGP: http://www.roessner-net.com/0x6B929997.asc
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 252 bytes
Beschreibung: OpenPGP digital signature
URL : <https://listi.jpberlin.de/pipermail/postfixbuch-users/attachments/20080126/0e7fd692/attachment.asc>
Mehr Informationen über die Mailingliste Postfixbuch-users