
Ich habe einen einfachen E-Mail-Server mit PostFix und Dovecot/IMAP eingerichtet. Ich habe jedoch ein Problem mit der Einrichtung der Blacklist.
unten ist mein Postfix main.cf
smtpd_recipient_restrictions = check_sender_access mysql:/etc/postfix/blacklist.cf reject_unauth_destination
schwarze Liste.cf
user = mailuser
password = mailuser2011
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 'REJECT' FROM blacklist WHERE email='%s' AND id=( SELECT id FROM virtual_users WHERE email='%u')
Meine SQL-Tabelle hat zwei Spalten für die Blacklist. Nämlich die id
und die, email
wobei die ID der einzelne Benutzer und die E-Mail die Adresse auf der Blacklist ist.
Ich möchte die Adressübereinstimmung aus der Datenbank mit Bezug auf den Empfänger in der E-Mail abrufen. Wenn ich den E-Mail-Wert fest auf etwas in der Datenbank Vorhandenes codiere, kann er E-Mails des blockierten Benutzers ablehnen.
Wenn ich jedoch verwende %u
(von dem ich annehme, dass es sich auf den Empfänger bezieht), schlägt die Blockierung überhaupt fehl.
Antwort1
Nachschlagetabellen in Postfix sind Schlüssel-Wert-Nachschlagetabellen. Das bedeutet, Sie haben einen Schlüssel und erhalten nach der Suche einen Wert. In Ihrem Fall (check_sender_access) ist der Schlüssel der Absender; und nur der Absender. Ihre Anforderung, zwei Schlüssel (Absender und Empfänger) zu haben, kann also mit Postfix nicht erfüllt werden.
Die einzige Möglichkeit, dieses Problem zu lösen, besteht darin,Richtliniendelegierung, wo Sie für Ihre Suche mehrere Schlüssel (Absender, Empfänger, IP, Hostname, Hallo, ...) haben.
Andererseits ist es aber keine gute Idee, sich auf die Absenderadresse zu verlassen, da diese am leichtesten zu fälschen ist.