Bisher benutze ich in einem exim Router einen db3 Lookup auf eine Datenbank in der die bei cyrus angelegten Benutzer hinterlegt sind. Ich kann also mit einem simplen Lookup prüfen ob der $local_part einer Adresse bei cyrus bekannt ist. Wenn der Benutzer nicht bekannt ist findet ein Adressrewriting statt (via MySQL Lookup).
Ich möchte das jetzt so abändern, dass anstelle des db Lookup ein LMTP callout (nach Exims Sprachgebrauch) an cyrus gemacht wird. Dort soll mit einem "RCPT TO:<$local_part>" getestet werden ob die Mail von cyrus angenommen wird. Ist die LMTP Connection unten soll die Mail in der queue gehalten werden. Nach einen 2xx Status soll die Mail ausgeliefert werden und ein 5xx soll in einem MySQL DB Lookup laufen wo geprüft wird ob ein Adressrewriting vorgenommen werden kann.
Ich kenne bisher die Möglichkeit in einer ACL nach dem RCPT TO: einen verfiy callout zu machen. Allerdings weiss ich nicht wie sich das verhält wenn dort Adressrewriting stattfindet. Also z.B. soll die E-Mailadresse mit $local_port "support" erstmal an den Benutzer "normale_adresse" geroutet werden.
Ich setze exim 4.20, cyrus 2.1.12 auf debian woody ein.
Wie exim LMTP callout in einem Router prüfen?
Re: Wie exim LMTP callout in einem Router prüfen?
Das ist genau das Problem, du hast es bereits erkannt.Ich kenne bisher die Möglichkeit in einer ACL nach dem RCPT TO: einen verfiy callout zu machen. Allerdings weiss ich nicht wie sich das verhält wenn dort Adressrewriting stattfindet. Also z.B. soll die E-Mailadresse mit $local_port "support" erstmal an den Benutzer "normale_adresse" geroutet werden.
Die RCPT_ACL läuft während des SMTP-Dialogs, die Router (z.B. der systemalias_router oder wie der heißt) kommen erst zum Zuge, wenn die Mail bereits akzeptiert wurde. Das habe ich auf meinem eigenen woody/exim4 System bereits festgestellt.
Ansonsten kann ich dir wohl nicht viel helfen, denn ich benutze weder SQL-DBs noch Cyrus.
Re: Wie exim LMTP callout in einem Router prüfen?
Gut dann war ich also nicht zu blind 8Ododolin wrote: Das ist genau das Problem, du hast es bereits erkannt.
Was wohl in jedem Fall geht ist ein "queryprogramm" router. Dort könnte ich ein externes Programm laufen lassen (vermutlich erstmal ein Perlscript) was via LTMP testet ob ein Benutzer mit $local_part existiert. Allerdings ist das wieder eine Bastellösung und ich hätte gerne etwas mit exim Boardmitteln gemacht. Hat noch jemand eine Idee?