Ich verwende Solaris 5.11 und sendmail. Lokale Benutzernamen haben die Form <Buchstaben><Zahlen> (z. B. hn06511). Früher haben wir Aliase verwendet, um auf <Benutzername>@alteDomäne.com zu verweisen.
<Benutzername> <Benutzername>@alteDomäne.com
Jetzt gibt es ein neues E-Mail-Adressschema und eine neue Domäne. Jetzt haben E-Mail-Adressen das Format <Vorname>.<Nachname>@neueDomäne.com.
Daher habe ich die Aliase wie folgt geändert:
<Benutzername> <Vorname>.<Nachname>@neueDomäne.com
Dies funktioniert, jedoch funktioniert <username>@olddomain.com nicht mehr. Um das Ganze noch schlimmer zu machen, gibt es viele Skripte mit fest codierten E-Mail-Adressen im alten Stil.
Ich möchte also <Benutzername>@alteDomain.com -> <Vorname><Nachname>@neueDomain.com ändern. Ich dachte, ich könnte dafür Virtusertables verwenden, also habe ich eine Virtusertable erstellt, die Folgendes enthält:
@altedomain.com %1
Angeblich sollte das <anybody>@olddomain.com nehmen und es nur an den Benutzernamen (%1) weiterleiten. Ich hoffte, dass die Aliase, die ich definiert habe, dann <username> -> <firstname>.<lastname>@newdomain.com übersetzen würden. Aber soweit ich sehen kann, ignoriert sendmail diese virtuelle Tabelle vollständig und versucht die Zustellung an <username>@olddomain.com und schlägt natürlich fehl.
Soweit ich weiß, habe ich die Virtusertable richtig formatiert und Makemap ausgeführt (sollte ich DBM oder Hash verwenden? Ich habe beides gesehen). Soweit ich weiß, habe ich das richtige FEATURE eingefügt und Make ausgeführt und sichergestellt, dass die generierte sendmail.cf am richtigen Ort ist. Ich habe FEATURE als beides ausgedrückt gesehen.
FUNKTION(
virtusertable',
dbm -o /etc/mail/virtusertable')
Und
FUNKTION(
virtusertable',
hash -o /etc/mail/virtusertable')
Aber beides funktioniert nicht.
Welche Art von Debugging- oder anderen Informationen kann ich bereitstellen und ausprobieren?
Dank im Voraus.
Antwort1
virtusertable Debug-Befehle für den Benutzer root
Suchen Sie nach @oldomain.com
einem Eintrag in der Virtusertable
echo '/map virtusertable [email protected]' | sendmail -bt
Überprüfen Sie, ob sendmail virtusertable auf E-Mail-Adressen von olddomain.com überprüft
echo '3,0 [email protected]' | sendmail -d60.5 -bt
-d60.5
verfolgt Kartensuchvorgänge (auch virtusertable-Suchvorgänge).
Weitere Hinweise:
m4
erwartet eine weitere NotierungFEATURE(virtusertable,`hash /etc/mail/virtusertable')
Machen Sie virtusertable nicht optional. Entfernen Sie es
-o
aus derFEATURE
Zeile.
Bei-o
sendmail wird fehlende virtusertable ignoriert.Sendmail verwendet die kompilierte Version von virtusertable. Verwenden Sie dies
makemap
zum Kompilieren von virtusertable.virtusertable wird nur für lokale E-Mail-Domänen (
$=w
) und$={VirtHost}
Domänen konsultiert.Verwenden Sie den folgenden Befehl als Root, um beide Domänenlisten abzurufen
echo '$=w' | sendmail -bt echo '$={VirtHost}' | sendmail -bt