Hallo,
ich habe folgendes Problem:
Ich nutze auf meinem Mailserver eine Kombination aus Exim4 (heavy with mysql), Courier-IMAP SSL, Amavis, Spamassassin, Clamv und verschiedene Tools zur Spamerkennung (Razor, Pyzor und DCC).
Alles läuft im Grunde genommen einwandfrei. Allerdings möchte ich Emails, die an lokale nichtexistierende Empfänger geschichkte werden, eigentlich sofort bouncen oder zumindest rejecten. Bisher ist es so, dass nachgeschaut wird, ob der Nutzer in der DB existiert. In der DB steht er nicht drin - draufhin verbleibt die Mail im Spool-Verzeichnis und wird mehrfach veruscht zuzustellen. Nach 3/4 Tagen enden die Zustellveruscgen und die Mail ist "frozen" (mailq). OK - ich kann Exim4 zum einen so konfigurieren, dass die frozen Mails irgendwann einmal rejected werden. Allerdings wäre mir lieber, dass Exim schon während der Phase der Anlieferung der Mails nachschaut, ob die lokale Mailbox existiert und falls nicht die Annahme der Mail verweigert.
Ich nutze dabei die gesplitteten Konfigfiles von Exim - d.h. ich habe im /etc/exim4/conf.d/ die Möglichkeit, u.a. acl's, router oder transports zu definieren.
Um das Ziel zu verwirklichen, müßte ich eigentlich eine acl-rule anlegen. Allerdings bin ich aus den Beispielen auf exim.org nicht so richtig schlau geworden.
Hat jemand von Euch vielleicht einen Tip für mich, wie ich o.g. Problem lösen kann?
Vielen Dank für Eure Hilfe und Unterstützung!
Mascha
Exim4: Mails Recjet
Re: Exim4: Mails Recjet
Nicht direkt.Um das Ziel zu verwirklichen, müßte ich eigentlich eine acl-rule anlegen.
Du brauchst nur
verify = recipient
Das funktioniert aber nur, wenn der Amavis-Router "no_verify" ist.
Die elegantere Lösung wäre aber, komplett auf solche Krücken wie Amavis zu verzichten und stattdessen z.B. exiscan-acl zu nutzen. Amavis ist bei Exim IMHO wirklich überflüssig und macht nur unnötigen Ã?rger. Sandwitch-Setups sind immer irgendwie Murks.
Re: Exim4: Mails Recjet
Hallo Dodolin,dodolin wrote:Nicht direkt.Um das Ziel zu verwirklichen, müßte ich eigentlich eine acl-rule anlegen.
Du brauchst nur
verify = recipient
Das funktioniert aber nur, wenn der Amavis-Router "no_verify" ist.
vielen Dank für Deine Hilfe!
Hmm .. in der betreffenden acl ist tatsächlich "verify = recipient" schon eingetragen.
Augenscheinlich scheint es also am Amavis-Router zu liegen.
Im Router-Verzeichnis unter /etc/exim4/conf.d/ habe ich an sich nur zwei Files, die irgendetwas mit Amavis zu tun haben:
... ein 650_domainname_amavis_mysql mit folgendem Inhalt:
Code: Select all
amavis: debug_print = "R: amavis for $local_part@$domain" driver = manualroute transport = amavis route_list = "* localhost byname" self = send condition =
${if and {
{eq {${lookup mysql{SELECT m.amavisok
FROM address a LEFT JOIN mailbox m ON a.mailboxid=m.id
WHERE (a.domain='${quote_mysql:$domain}')
AND (a.local='${quote_mysql:$local_part}' OR a.local IS NULL)
ORDER BY a.local DESC LIMIT 1}}}{1}
}
{!eq {$interface_port}{10025}}
}{1}{0}} ... und ein 900_amaris_mysql_user mit folgendem Inhalt:
Code: Select all
mysql_user: driver = accept condition = ${lookup mysql {SELECT local FROM address
WHERE local='${quote_mysql:$local_part}'
AND domain='${quote_mysql:$domain}'
AND mailboxid IS NULL}{0}{1}} retry_use_local_part transport = ${lookup mysql {SELECT
IF(m.mode='DIR', 'mysql_delivery', 'mysql_file_delivery')
FROM address a LEFT JOIN mailbox m ON a.mailboxid=m.id
WHERE (a.domain='${quote_mysql:$domain}')
AND (a.local='${quote_mysql:$local_part}' OR a.local IS NULL)
ORDER BY a.local DESC LIMIT 1}
{$value}
{mysql_delivery}} Könntest Du mir einen Tip geben, was ich hier noch ändern muß, damit das verify = recipient in meiner acl Wirkung entfaltet?
Vielen Dank für Deine/Eure Hilfe!
Viele Grüße!
Mascha
Re: Exim4: Mails Recjet
Könntest du die Code-Blöcke mal so formatieren, damit man das auch lesen kann?!
Aber auch diesen Hinweis wiederhole ich dir gerne:
HTH.
Also, guckst du, spec.txt, Kapitel 15 Generic Options for Routers, suchst dort nach "verify" und Kapitel 6.7 Boolean Options. Außerdem empfehlenswert: Kapitel 3.9 Processing an address for verification.Das funktioniert aber nur, wenn der Amavis-Router "no_verify" ist.
Aber auch diesen Hinweis wiederhole ich dir gerne:
IOW: Amavis ist Schei.Ã?e. Es mag vielleicht MTAs geben, da geht's nicht ohne, aber bei Exim ist das IMHO wirklich so gut wie nie nötig.Die elegantere Lösung wäre aber, komplett auf solche Krücken wie Amavis zu verzichten und stattdessen z.B. exiscan-acl zu nutzen. Amavis ist bei Exim IMHO wirklich überflüssig und macht nur unnötigen Ã?rger. Sandwitch-Setups sind immer irgendwie Murks.
HTH.
Danke
Hallo Dodolin,
vielen Dank für Deinen Tip!
Letztlich hat es doch genauso funktioiert, wie von Dir vorgeschlagen - das Problem lag letztendlich in meinem mysql_user - Router. Dieser wurde auch im Rahmen der Recipient-acl angesprungen - allerdings waren die MySQL-Befehle noch nicht in der "optimalen Reihenfolge", um auf den fehlenden local-Part zu reagieren. Jetzt klappt es aber!
Nochmals vielen Dank!
Mascha
vielen Dank für Deinen Tip!
Letztlich hat es doch genauso funktioiert, wie von Dir vorgeschlagen - das Problem lag letztendlich in meinem mysql_user - Router. Dieser wurde auch im Rahmen der Recipient-acl angesprungen - allerdings waren die MySQL-Befehle noch nicht in der "optimalen Reihenfolge", um auf den fehlenden local-Part zu reagieren. Jetzt klappt es aber!
Nochmals vielen Dank!
Mascha