[Postfixbuch-users] postfix policy-service - mehrere empfänger

Thomas Schwenski mailing-lists at thomasschwenski.de
Sa Apr 3 18:57:14 CEST 2010


Hallo Ralf,

Ralf Hildebrandt schrieb:
> Das geht nicht: Du muesstest den Test in der DATA Phase machen. Dort
> geht aber nur "alles oder nichts". In der recipient phase hingegen
> sind nicht ALLE Empfänger bereits bekannt.

Sofern man ausreichend Ressourcen zur Verfügung hat:
Was spricht gegen meinen schonmal eingestreuten Vorschlag den
Policy-Dienst sowohl in den smtpd_recipient_restrictions als auch in den
    smtpd_end_of_data_restrictions zu verwenden?

Gemäß der Dokumentation des Postfix-Policy-Protokolls unter
http://www.postfix.org/SMTPD_POLICY_README.html enthält das Attribut
"size" in den smtpd_recipient_restrictions den freiwillig vom Client
angegebenen Wert.
Dieser ist zwar einerseits optional und andererseits nicht verlässlich,
da er von der Gegenseite kommt, aber andererseits macht es für den
Client wenig Sinn einen größeren als den tatsächlichen Wert anzugeben.
(Damit würde er ja gegebenenfalls eine schlechtere Bewertung riskieren.)

Die tatsächliche Größe der E-Mail wird dem Policy-Daemon erst in den
smtpd_end_of_data_restrictions von Postfix mitgeteilt. Dieser Wert ist
verlässlich, da er von unserem eigenen Server erittelt wurde.

Andererseits hat man bei einer alleinigen Einbindung des Policy-Daemons
in den smtpd_end_of_data_restrictions im Gegensatz zur Einbindung in den
smtpd_recipient_restrictions nicht mehr die Möglichkeit die E-Mail für
einzelne Empfänger abzulehnen sondern nur noch für alle.
Außerdem wurde zu diesem Zeitpunkt bereits die E-Mail komplett
übertragen - es sind also schon (teilweise vermeidbare) Kosten für
Traffic entstanden.

Ich finde es spricht ausreichend viel für eine doppelte Einbindung (eine
entsprechende Implementierung vorausgesetzt).
Die Gestaltung der Fehlermeldung muss dann natürlich entsprechend
gestaltet werden - so dass der Absender erkennen kann, ob die E-Mail nur
einzelne oder alle Empfänger nicht erreicht hat.
In welchem Stadium der Kommunikation die E-Mail abgelehnt wurde kann der
Policy-Daemon anhand des Vorhandenseins bzw. der Werte anderer Attribute
 ermitteln.

Außerdem halte ich eine Vermischung der Quota-Zuständigkeiten zwischen
einem Policy-Daemon und z.B. Dovecot für bedenkenswert.
Zumindest auf einem reinen POP3-Mailserver würde ich die Zuständigkeit
alleine beim Policy-Server belassen um die Ablehnungen und die
entsprechenden Fehlermeldungen eindeutig zu halten und nur an genau
einer Stelle erzeugen zu lassen.
Bei IMAP-Umgebungen (auch im POP3-IMAP-Mischbetrieb) ist das jedoch nur
bedingt ratsam, da zusätzlich zum Füllen des Postfachs per Eingang von
E-Mails per SMTP, die Mailbox auch per IMAP voll geladen werden kann.
In diesem Fall muss natürlich auch dieser Weg überwacht werden und
"gesperrt" werden können.
Generell halte ich es bei einer derartigen Kostellation sowieso für
sinnvoll(er) die Dovecot-Quota großzügiger zu halten, als die nach der
der Policy-Daemon reagiert.
Schließlich könnte, während der Policy-Daemon eine E-Mail noch zulässt
noch eine beim Content-Filter liegen oder gerade per IMAP im Postfach
abgelegt werden und die gerade angenommene E-Mail würde dann am Ende von
Dovecot auch nur wieder abgelehnt werden.
Ich halte daher einen Differenzwert von mindestens dem Wert von
message_size_limit für sinnvoll.
Natürlich kann man mit einem derartigen Konzept nicht 100%ig alle
Eventualitäten abdecken, aber auf jeden Fall ist es die eine oder andere
Überlegung wert.

Just my 2 cents

Thomas



Mehr Informationen über die Mailingliste Postfixbuch-users