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 error
Mailer 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.c
und sendmail/recipient.c
zusä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 ;)