54. pepsi-stage-secretary¶
Mail von unbekannten Absendern zurückhalten, bis diese per Antwort bestätigen.
54.1. Rolle¶
pepsi-stage-secretary ist Confirm-to-Send nach dem Vorbild von qmails qsecretary. Mail von einem Absender, den keine weiße Liste kennt, wird zurückgehalten, und der Absender wird — in seiner Sprache — gebeten, einmal zu antworten. Die Antwort setzt ihn auf die weiße Liste und gibt alles frei, was für ihn zurückgehalten wurde; spätere Mail von ihm passiert pepsi-stage-check-whitelist und wird nie wieder zurückgehalten. Ohne Antwort bis HOLD_TIME nimmt die zurückgehaltene Mail den Timeout-Pfad (BOUNCE_STAGE, falls eine verdrahtet ist, sonst wird sie gelöscht). Referenz: pepsi-stage-secretary(1).
Sie ist schwächer als Bezahlen-vor-Senden (pepsi-stage-anti-spam): Ein Spammer mit einem funktionierenden Postfach kann antworten, und die Erklärung, der der Absender zustimmt (PENALTY), ist eine rechtliche statt einer wirtschaftlichen Abschreckung. Sie lohnt sich dennoch, denn die meiste Massenmail kommt von Adressen, die nichts empfangen können, und ein echter Korrespondent zahlt eine Antwort, einmal. Unterstützte Funktionen vergleicht die beiden.
54.2. Was eine Challenge erhält¶
Eine Nachricht mit Null-Absender, lokal eingelieferte Mail und ein Absender auf der weißen Liste (state.spam = false) passieren unverändert; state.spam = true nimmt den Timeout-Pfad. Alles andere erhält eine Challenge — es sei denn, es darf keine erhalten; dann geht es zu UNCHALLENGEABLE_STAGE (nicht gesetzt: der Timeout-Pfad):
RFC 3834 sagt, dass darauf nicht geantwortet werden darf (Listen,
Precedence: bulk,Auto-Submitted:, Dienst-Absender, Zustellberichte);sein
From:ist nicht genau der Envelope-Absender — die Challenge geht an MAIL FROM und die weiße Liste gleichtFrom:ab, also müssen beide dieselbe Adresse sein;REQUIRE_AUTHENTICATED(standardmäßig an) und weder SPF noch DMARC bestanden — die Backscatter-Sperre;der Absender hat in den letzten 24 Stunden über alle weißen Listen hinweg bereits
MAX_CHALLENGES_PER_SENDER(standardmäßig 5) Challenges erhalten.
Eine Challenge deckt jede Nachricht von einem Absender an eine weiße Liste ab: Eine zweite Nachricht schließt sich der offenen Challenge an und übernimmt deren Frist. Eine Nachricht, deren Empfänger WHITELIST_NAME zu verschiedenen Listen expandieren, wird in eine Zeile je Liste aufgeteilt.
54.3. Die Challenge und die Antwort¶
Die Challenge ist eine text/plain-Nachricht mit Null-Absender und Auto-Submitted: auto-replied, eingespeist bei RESPONSE_STAGE. Ihr From: und Reply-To: sind die Antwortadresse <CONTROL_LOCAL_PART>-<cookie>@<domain> (standardmäßig secretary-…), deren Cookie ein zufälliger 128-Bit-Bezeichner ist. Sie zitiert die zurückgehaltene Nachricht nie — eine Challenge an einen gefälschten Absender würde sonst den Spam für den Spammer zustellen — über einen 8 Zeichen langen Hinweis auf ihren Betreff (SUBJECT_HINT_LENGTH) hinaus.
Der Text stammt aus MESSAGE_<LANG> im eigenen Abschnitt der Stage (dem eines Benutzers, über die Settings-Ebene) oder aus der Vorlage secretary-challenge.<lang>.body, je Sprache, mit einem eingebauten englischen Fallback; die Felder sind SENDER_NAME, RECIPIENT, SUBJECT_HINT, ORIGINAL_DATE, DEADLINE, REPLY_ADDRESS und PENALTY. Sprachwahl und die Zwei-Leerzeichen-Regel sind die von pepsi-stage-vacation.
Eine Antwort an die Adresse bestätigt, wenn sie von der angefragten Adresse kommt (ihrem Envelope-Absender oder From:). Eine Antwort mit Null-Absender bedeutet, dass die Challenge gebounct ist, und gibt die zurückgehaltene Mail sofort an den Timeout-Pfad frei; eine als automatisch gekennzeichnete Antwort (eine Abwesenheitsnotiz) wird ignoriert. Eine Antwort nach Ablauf der Frist hat keine Wirkung: Die Challenge existiert nicht mehr. Die Antwort selbst wird immer verbraucht.
54.4. Platzierung¶
Nach pepsi-stage-detect-language und pepsi-stage-check-whitelist, vor pepsi-stage-aliases, dem Listen-Router und der lokalen Zustellung. Lassen Sie pepsi-stage-auto-whitelist auf dem ausgehenden Pfad in denselben WHITELIST_NAME schreiben, damit die Leute, denen Ihre Benutzer schreiben, nie eine Challenge erhalten. Der Assistent von pepsi-setup verdrahtet all das, wenn er auf „Ask unknown senders to confirm by reply“ gefragt wird.
54.5. Konfiguration¶
[stage-<name>]: PROGRAM = pepsi-stage-secretary, NEXT_STAGE und RESPONSE_STAGE (Pflicht), WHITELIST_NAME (Pflicht, ein Name oder eine {login}/{localpart}-Vorlage; der Operator darf jede beliebige Whitelist benennen, eine geteilte eingeschlossen, während ein Wert, den ein Kontoinhaber per Mail setzt, in seinem Namensraum <login>/... bleiben oder der des Operators sein muss – durchgesetzt von pepsi-stage-edit-settings, wenn es den Wert speichert), BOUNCE_STAGE, UNCHALLENGEABLE_STAGE, CONTROL_LOCAL_PART, HOLD_TIME, REQUIRE_AUTHENTICATED, MAX_CHALLENGES_PER_SENDER, DKIM_REQUIRED, CONFIRM_NOTICE, PENALTY, SUBJECT_HINT_LENGTH, TEMPLATE, SUBJECT, DEFAULT_LANGUAGE, die Überschreibungen MESSAGE_<LANG>/SUBJECT_<LANG>/CONFIRM_MESSAGE_<LANG> und die Lokalitätsoptionen. pepsi-setup weist nicht auflösbare Ziele und eine DEFAULT_LANGUAGE ohne Text ab und warnt, wenn keine check-whitelist die Whitelist konsultiert, keine auto-whitelist sie schreibt oder CONTROL_LOCAL_PART ein Login oder ein Alias ist. Siehe pepsi-stage-secretary(1) und Konfiguration.
54.6. State¶
Eingaben:
state.spam,state.local_origin,state.auth(SPF, DMARC, DKIM, ARC),state.language.Ausgaben:
state.secretaryauf einer zurückgehaltenen Zeile (challenge,deadline,whitelist; dannconfirmedoderabandoned),state.secretary.unchallengeableauf Mail, die zuUNCHALLENGEABLE_STAGEgeroutet wird, undstate.spam = falseauf freigegebener Mail. Der Timeout-Pfad entferntstate.secretary.state.dsnbleibt erhalten.Übergänge: weiterschalten zu
NEXT_STAGE; pausieren, solange zurückgehalten; umleiten zuUNCHALLENGEABLE_STAGEoderBOUNCE_STAGE; eine Antwort löschen, oder Mail mit abgelaufener Frist, wenn es keineBOUNCE_STAGEgibt.
54.7. Datenbank¶
pepsi.secretary_challenge (eine offene Challenge je weißer Liste und Absender, gelöscht, wenn sie beantwortet wird, bounct oder abläuft) und pepsi.secretary_sent (wann jede Challenge gesendet wurde, ohne ihr Cookie, für die Tagesobergrenze). Eine Bestätigung schreibt eine gewöhnliche pepsi.whitelist-Zeile, genau so maskiert und verankert, wie pepsi-stage-auto-whitelist eine schreibt.
54.8. Siehe auch¶
pepsi-stage-check-whitelist, pepsi-stage-auto-whitelist, pepsi-stage-anti-spam, pepsi-whitelist, pepsi-settings, Unterstützte Funktionen, pepsi-stage-secretary(1).