ich würde gern den Versand von Mails über Postfix an bestimmte Mail-Adressen blockieren. Das ganze soll per MySQL geregelt werden. Über die Suche habe ich schon einige ähnliche Beiträge gefunden, allerdings nichts was konkret in diese Richtung geht.
Folgendermaßen sieht bisher mein Ansatz aus:
In der main.cf
Code: Select all
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_recipient_access mysql:/etc/postfix/mysql-virtual_blocked_recipients.cf
Code: Select all
SELECT CASE 1 WHEN (select count(email) from blocked_recipients where email="email@domain.tld" limit 1) THEN 'REJECT' ELSE 'OK' END;
In der Tabelle blocked_recipients gibt es nur das Feld "email". Obiger Query klappt einwandfrei (ab MySQL 5).
Nur stellt sich mir nun die Frage, wie ich den Query in das Schema von Postfix pressen kann :(
In der /etc/postfix/mysql-virtual_blocked_recipients.cf
Code: Select all
user = mein_dbuser
password = mein_dbpass
dbname = mein_dbname
table = ...
select_field = ...
where_field = ...
hosts = sql.meinhost.de
Es wäre allerdings ziemlich unmöglich, jede einzelne E-Mail-Adresse, an die je eine Mail verschickt wird, in die Liste einzutragen mit einem weiteren Feld "OK".
Daher bin ich eben im SQL-Code den Umweg über CASE-WHEN-THEN gegangen.
Hat vielleicht jemand eine Idee, wie ich das am besten lösen könnte?
Danke & Gruß,
Christian