Verwenden von Sendmail nur mit Nicht-Systembenutzern

Verwenden von Sendmail nur mit Nicht-Systembenutzern

Ich muss Sendmail ohne Systembenutzer verwenden.

Das einzige Problem, das in meiner Konfiguration noch besteht, ist, dass FEATURE(virtusertable)ich einen letzten Systembenutzer auf der rechten Seite in meiner Virtusertable wie folgt haben möchte:

@domain.tld           [email protected]
[email protected]       systemuser

Das Problem besteht darin, dass es KEINEN solchen Systembenutzer gibt und ich möchte, dass alle E-Mails an @domain.tld an meinen LDA (Procmail, dann Dovecot-LDA) übermittelt werden, der vollständige E-Mail-Adressen als Benutzer verarbeiten kann.

Ich habe bereits Dinge ausprobiert wie

define(`_VIRTUSER_STOP_ONE_LEVEL_RECURSION_', `true')dnl
define(`_NEED_MACRO_MAP_',`1')dnl

aber das hilft auch nichts.

Wir haben bereits eine hässliche Problemumgehung mit Procmail-Skripten, die die Virtusertable lesen, aber wir würden das gerne von Sendmail erledigen lassen, sodass jede gesendete E-Mail, die kein RHS und/oder keinen Benutzer im LDA hat, zurückgewiesen wird. Darüber hinaus ist die Verwendung von Dovecot-LDA als direktes LDA in Sendmail in unserem Setup ebenfalls keine Option. :(

Jede Hilfe ist willkommen!

Antwort1

Schauen Sie sich anSendmail FAQ 3.29- „Wie kann ich einen Header hinzufügen, der den tatsächlichen Empfänger angibt, wenn mehrere Benutzer in einer virtuellen Domäne auf ein einziges Postfach zugreifen?“

Meiner Meinung nach kann es leicht angepasst werden, um das zu liefern, was Sie möchten – es stellt alle erforderlichen Hooks bereit.

Übrigens können Sie den Virtusertable-Eintrag „@domain.tld“ für ausgewählte errorMailer verwenden. Damit können Sie Nachrichten an virtuelle Benutzer ablehnen, die nicht in der Virtusertable aufgeführt sind.

@domain.tld           error:nouser No such user here
[email protected]       systemuser+%1
[email protected]        systemuser+%1

Sie können auch konsultierenhttps://www.sendmail.com/sm/open_source/tips/virtual_hosting/

Antwort2

Ich habe das Problem letztendlich auf zwei Arten gelöst:

a) Patchen libsm/mbdb.cund sendmail/recipient.czusätzliche Suche in der Dovecot-Benutzertabelle. Damit dies funktioniert, war eine kleine Anpassung mit einer LOCAL_RULE_0 erforderlich.

b) Andrzej hat mich in einer ähnlichen Frage auf Stackoverflow auf eine Lösung mit Mailertable und Access-Datei hingewiesen. Dieser Idee folgend habe ich eine noch einfachere Lösung gefunden, um alles zu haben, was wir brauchen:

virtuelle Tabelle:

@domain.tld              user_domain_tld
[email protected]          user_another_tld

Aliase:

user_domain_tld: "|/bin/procmail -a [email protected]"
user_another_tld: "|/bin/procmail -a [email protected]"

Lösung a) ist nett, weil sie die akzeptierte Syntax in virtusertable ändert und man im Laufe der Zeit nur eine Datei überprüfen muss, während Lösung b) gewinnt, weil sie einfacher zu erreichen ist und außerdem kompatibler mit zukünftigen Versionen von sendmail ist. Nach all der Arbeit verwende ich Lösung a), werde aber nach Weihnachten zu Lösung b) wechseln ;)

verwandte Informationen