Centos: Postfix Aliases-File include?

Moin Experten,

bei unserem Centos basiertem Postfix-Server haben wir eine umfangreiche Aliases-Datei. Wenn wir an bestimmten Anwendungen „schrauben“, schreiben wir die Aliases so um, dass die beteiligten Adressen für die Dauer des Tests durch Dummys ersetzt werden - einfach damit die Testmails nicht nach außen gehen.

Das ist aber jeweils eine saublöde Arbeit, über 50 Adressen auszukommentieren bzw. wieder einzubinden. Ok, man könnte auch zwei Dateien haben, die man jeweils umbenennt, aber schön ist das auch nicht, weil man ja eventuelle Änderungen in beiden Dateien nachführen müsste.

Langer Vortest, kurze Frage: gibt es eine Art „include“ Befehl, mit dem sich innerhalb der Aliases-Datei eine andere Datei einbinden lässt? (Der vorhandene INCLUDE Befehl macht ja etwas völlig anderes).

Gruß
Stefan

Hallo,

normalerweise schraubt man einfach nicht an einem Prod System, sondern man nimmt dafür einen testserver.

hth

Moin,

normalerweise schraubt man einfach nicht an einem Prod System,
sondern man nimmt dafür einen testserver.

Mir ist zwar nicht klar, was das mit dem Thema zu tun haben soll, aber: es ist ja eben nicht das Postfix-System, an dem geschraubt wird.
Beispiel: ein System soll wöchentliche Auswertungen an das Management schicken. Wenn ich jetzt (von mir aus auf einem völlig getrennten Testsystem) da etwas ändern muss, werden die Mails trotzdem über den Postfix-Server verschickt. Wenn ich also verhindern will, dass ich die Schlipsträger mit irgendwelchen Testmails zuspamme, muss ich die Aliase ändern. Das ist die minimalinvasive Möglichkeit (außer dafür auch noch einen getrennten Postfix-Server aufzusetzen, was geringfügig übertrieben wäre).

hth

Aber sowas von nicht. :wink:

Nix für ungut.

Gruß
Stefan

es gibt keine alternative zu einem testsystem.

Das ist aber jeweils eine saublöde Arbeit, über 50 Adressen
auszukommentieren bzw. wieder einzubinden. Ok, man könnte auch
zwei Dateien haben, die man jeweils umbenennt, aber schön ist
das auch nicht, weil man ja eventuelle Änderungen in beiden
Dateien nachführen müsste.

cat normales\_alias \> /etc/aliases
cat auskommentiertes\_alias \>\> /etc/aliases



cat normales\_alias \> /etc/aliases

Viele unnütze Katzen, nicht wirklich schän, aber vielleicht hilft es ja als Idee.

Sebastian

es gibt keine alternative zu einem testsystem.

Danke, oh Alter und Weiser!

Nur… was willst Du uns damit sagen?
(Bitte zutreffendes ankreuzen:smile:

[] Ich bin DER Postfix Experte. Ich lebe und atme Postfix und sage dir: was du willst ist technisch nicht möglich!

[] Von Postfix habe ich eigentlich keine Ahnung, aber ich werfe gerne Binsenweisheiten unters Volk.

[] 42

Respektvolle Grüße
Stefan

Moin,

cat normales_alias > /etc/aliases
cat auskommentiertes_alias >> /etc/aliases

cat normales_alias > /etc/aliases

Hmmm, ja - auf so etwas in der Art wird es wohl hinauslaufen.
Wobei es noch etwas komplizierter ist. Bei uns schaut das z.B. so aus:

......

# Auswertung XYZ: Normaler Mailverteiler
vertrieb: [email protected]
werbung: [email protected]
produktion: [email protected]
.....

# Auswertung XYZ: Test Mailverteiler:
#vertrieb: [email protected]
#werbung: [email protected]
#produktion: [email protected]
...

Im Testfall wird der „normale“ Teil auskommentiert und beim anderen Teil die Kommentarzeichen entfernt.
Aber Du hast recht, auch das ließe sich mit cat lösen. Ein Include zu Fuß…

Viele unnütze Katzen, nicht wirklich schän, aber vielleicht
hilft es ja als Idee.

Tut es. :smile:

Gruß
Stefan

Hallo,

Im Testfall wird der „normale“ Teil auskommentiert und beim
anderen Teil die Kommentarzeichen entfernt.

„man sed“: an jeden Zeilenanfang ein # machen und mit einem erneuten Durchlauf bei allen Zeilen mit zwei ## am Beginn zwei ## löschen.

Rückwärts: bei allen Zeilen mit # am Anfang ein # löschen.

HTH,

Sebastian

[X] Ich bin DER Postfix Experte. Ich lebe und atme Postfix und
sage dir: was du willst ist technisch nicht möglich!

[] Von Postfix habe ich eigentlich keine Ahnung, aber ich
werfe gerne Binsenweisheiten unters Volk.

[X] 42

Bitte gib eigenen Text ein und lösche den Teil des Zitats, auf den du dich nicht beziehst. Denn ein unverändertes Zitat der vorherigen Antwort bietet keinen Mehrwert für den Fragesteller. … mehr auf http://www.wer-weiss-was.de/app/article/write

1 Like

Hi,

„man sed“: an jeden Zeilenanfang ein # machen und mit einem
erneuten Durchlauf bei allen Zeilen mit zwei ## am Beginn zwei

löschen.

Rückwärts: bei allen Zeilen mit # am Anfang ein # löschen.

Nö, da bleib ich lieber bei der Idee mit dem ‚cat‘ (Bei ‚sed‘ weiß man nie, was es für Kollateralschäden gibt).

cat /etc/fixer.teil /etc/normaler.teil \> /etc/aliases

bzw.

cat /etc/fixer.teil /etc/test.teil \> /etc/aliases

Kann man ja noch mit einem ‚sudo newaliases‘ in jeweils ein Shellskript klatschen und gut ist.

Also wenn nicht doch noch jemand mit dem verborgenen ‚include‘ Kommando für die aliases kommt, werde ich das wohl so machen.

(So, ich geh’ mir jetzt erst mal die Augen mit Chlorbleiche waschen: ich hatte mir bei deinem Posting vorher noch mal schnell die Syntax vom cat-Befehl ansehen wollen und bei Tante Kugel „man cat“ eingegeben. Leider war ich zu dem Zeitpunkt in der Bildersuche… O______O)

Gruß
Stefan

dafür ein * (owt)
*grins*

Hi,

Nö, da bleib ich lieber bei der Idee mit dem ‚cat‘ (Bei ‚sed‘
weiß man nie, was es für Kollateralschäden gibt).

Nicht wenn man die Manpage gelesen und verstanden hat…sed ist da völlig stressfrei.

Also wenn nicht doch noch jemand mit dem verborgenen ‚include‘
Kommando für die aliases kommt, werde ich das wohl so machen.

**source** deinZuInkludierendeDatei

Gruß XXD

[back on *NIX]

Also wenn nicht doch noch jemand mit dem verborgenen ‚include‘
Kommando für die aliases kommt, werde ich das wohl so machen.

source deinZuInkludierendeDatei

Hm? Woher kommt denn die Info? „man aliases“ hat das nicht, zumindest nicht das von Postfix.

„man aliases“ hat allerdings Hinweise auf ein :include-Statement, was allerdings wohl anders tut als gewünscht. (in der Datei können mehrere Einträge zu einem Alias definiert werden.

Gruß,

Sebastian

Moin,

Nicht wenn man die Manpage gelesen und verstanden hat…sed
ist da völlig stressfrei.

sed ja - der Anwender oft nicht. Besonders dann, wenn ihm sed zwar die gewünschte Änderung gemacht hat, ihm aber gleichzeitig 1000 Zeilen weiter oben unbemerkt noch was anderes weggekeult hat, was eigentlich hätte stehen bleiben sollen, woran der o.ä. Anwender aber beim sed-Aufruf nicht gedacht hat.

Nebenbei: hab’ kürzlich einen schönen Vergleich gelesen: „Einen Fragesteller auf Unix Manuals zu verweisen ist ungefähr so sinnvoll, wie jemandem, der wissen will, warum er nach Gurkensalat immer so aufstoßen muss, einen Link zu einem 1000-seitigen Biologie-Lexikon zu schicken.“

source deinZuInkludierendeDatei

Nanu? Innerhalb der /etc/aliases? Hidden command? Wo ist das dokumentiert? Also mein postfix verarbeitet das nicht.

Gruß
Stefan

Also wenn nicht doch noch jemand mit dem verborgenen ‚include‘
Kommando für die aliases kommt, werde ich das wohl so machen.

Was soll dir das include überhaupt nutzen? Du musst auch mit include-Befehl zwei verschiedene Dateien pflegen. Dieses Problem kannst du nur umgehen (zumindest fällt mir nix anderes ein), indem du eine zentrale dritte Datei pflegst, mit der /etc/aliases einmal original (Produktionsbetrieb) und einmal manipuliert überschrieben wird.

Und für die Manipulation einen sed-Befehl in ein Script einzubauen (oder ein =~ s/// in ein perl-skript), so dass du anschließend nur noch ein mach_aliases test bzw. mach_aliases prod aufrufen musst, ist völlig ungefährlich, denn diesen sed-Befehl kannst du intensivst austesten.

Gruß

Moin,

Was soll dir das include überhaupt nutzen? Du musst auch mit
include-Befehl zwei verschiedene Dateien pflegen.

Jain. Natürlich kann sich auch am Verteiler für diese Auswertung mal was ändern (sonst bräuchte man den Umstand mit den Alias-Adressen ja nicht), aber es ist eben nur ein sehr kleiner Teil der aliases-Datei.

Und für die Manipulation einen sed-Befehl in ein Script
einzubauen (oder ein =~ s/// in ein perl-skript), so dass du
anschließend nur noch ein mach_aliases test bzw. mach_aliases
prod
aufrufen musst, ist völlig ungefährlich, denn diesen
sed-Befehl kannst du intensivst austesten.

Kennst du das KISS - Prinzip?

Ich bin mir ziemlich sicher, dass man mit sed eine Befehlsfolge basteln könnte, die genau die paar-und-zwanzig Kommentarzeichen im fraglichen Teil manipuliert und die hunderte von anderen Kommentarzeichen in der Datei ignoriert. Und wenn ich der einzige wäre, der mit dieser Datei arbeitet, würde ich das schon „pour le sport“ in Erwägung ziehen.

Dem ist aber nicht so. Und glaub mir: so idiotensicher kann niemand ein Script schreiben, dass es nicht irgendwer irgendwie kaputt kriegt!

„Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.“ (Rick Cook)

Gruß
Stefan

Befehlsfolge basteln könnte, die genau die paar-und-zwanzig
Kommentarzeichen im fraglichen Teil manipuliert

Kommentarzeichen manipulieren? Ich dachte, es ginge dir um die Manipulation von Mailadressen?

Gruß

Kommentarzeichen manipulieren? Ich dachte, es ginge dir um die
Manipulation von Mailadressen?

Das hast du falsch verstanden. Lies noch mal meine Antwort an Sebastian (27.6.2014 07:43), da habe ich es erklärt.

Gruß
Stefan

Das hast du falsch verstanden. Lies noch mal meine Antwort an
Sebastian (27.6.2014 07:43), da habe ich es erklärt.

Aber was du dort machst, ist (aus Sicht von postfix) doch nichts anderes, als eine Manipulation von Mailadressen. Vorher steht da
vertrieb: [email protected]
und nachher
vertrieb: [email protected]

Und das ist über ein beherztes sed „s/:.*@/: arme.sau@/“ gleich erledigt. Ein bisschen Script drumherum brauchst du, um nur Adressen hinter (und/oder vor) einem bestimmten Marker zu manipulieren - und um einen schönen Disclaimer in die /etc/aliases vorne rein zu schreiben, dass diese Datei nur noch programmatisch geändert werden darf.

Damit schaffst du keine neuen Fehlerquellen, sondern verringerst vielmehr die Fehlerangriffsfläche. Auf ähnliche Weise führe ich alle Adressen zusammen, die der postfix in seiner userdb vorhalten muss. Das sind alle Adressen und alle Aliase eines Exchange-Servers, soweit die keinen ‚nicht extern‘-Vermerk tragen oder Exchange-internen Zwecken dienen, zuzüglich aller statischen Aliases sowie aller Adressen, die nicht über Exchange, sondern direkt auf dem Postfix oder an dritter Stelle verarbeitet werden. Das Script holt die Adressen aus ActiveDirectory, prüft gegen verschiedene Kriterien, ob sie zum Zielbestand gehören, bereitet sie mittels Schere und Leim für die userdb auf, und schreibt letztere schließlich fort. Absolutely flawless!

Gruß

Hi,

Aber was du dort machst, ist (aus Sicht von postfix) doch
nichts anderes, als eine Manipulation von Mailadressen. Vorher
steht da
vertrieb: [email protected]
und nachher
vertrieb: [email protected]

Und das ist über ein beherztes sed „s/:.*@/: arme.sau@/“
gleich erledigt.

Ja klar, aber ich will ja nach dem Test auch wieder zurück gehen, so dass wieder alfred.e.neumann drin steht. Im Augenblick sehe ich den Mehrwert der sed-Lösung gegenüber der cat-Lösung nicht. Mag sein, wenn es mal mehr als ein Verfahren gibt, bei dem auf regelmäßiger Basis solche Tests gefahren werden und dafür die Postfix-Aliase manipuliert werden müssen.

Im Wesentlichen setzen wir Postfix sowieso nur ein um Kosten zu sparen: wie haben für unser Mail-System einen Vertrag, bei dem jede definierte Einheit (Benutzer oder Gruppe/Verteiler) monatlich Geld kostet. Maxime also: so einfach wie möglich und kosten darf es nix. Willkommen in der schönen neuen Welt der IT…

Gruß
Stefan