xucha Geschrieben 7. Februar 2007 Geschrieben 7. Februar 2007 Hallo, ich versuche mich gerade an einem Skript, welches aber irgendwie nicht ausgefĂŒhrt wird. Etwas zum Hintergrund, also ich habe Postfix am laufen und versuche mit altermime an alle ausgehenden Emails eine Signatur dran zu hĂ€ngen. Mit einer DomĂ€ne funkt alles wunderbar. Da ich aber mehrere DomĂ€nen habe, soll bei jeder DomĂ€ne eine andere Signatur dran. so sieht das Skript dann aus: #!/bin/sh # Parameter ALTERMIME=/usr/local/bin/altermime ALTERMIME_DIR=/var/spool/altermime SENDMAIL=/usr/sbin/sendmail else_file=/etc/postfix/default_sig.txt else_htmlfile=/etc/postfix/default_sig_html.txt AAA_file=/etc/postfix/AAA_sig.txt AAA_htmlfile=/etc/postfix/AAA_sig_html.txt BBB_file=/etc/postfix/BBB_sig.txt BBB_htmlfile=/etc/postfix/BBB_sig_html.txt CCC_pl_file=/etc/postfix/CCC_pl_sig.txt CCC_pl_htmlfile=/etc/postfix/CCC_pl_sig_html.txt CCC_dk_file=/etc/postfix/CCC_dk_sig.txt CCC_dk_htmlfile=/etc/postfix/CCC_dk_sig_html.txt # Prozesssignale TEMPFAIL=75 UNAVAILABLE=69 # Wechsel ins altermime Verzeichnis cd $ALTERMIME_DIR || { echo $ALTERMIME_DIR does not exist; exit $TEMPFAIL; } # Remove wenn normalexit,sighup,sigint,sigquit,kill trap "rm -f in.$$" 0 1 2 3 15 # Anlegen Tempdatei cat >in.$$ || { echo Cannot write to $ALTERMIME_DIR; exit $TEMPFAIL; } if [ cat in.$$ | grep From: | grep -o AAA.de = "AAA.de" ];then $ALTERMIME --input=in.$$ \ --disclaimer=$AAA_file \ --disclaimer-html=$AAA_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } elif [ cat in.$$ | grep From: | grep -o BBB.de = "BBB.de" ];then $ALTERMIME --input=in.$$ \ --disclaimer=$BBB_file \ --disclaimer-html=$BBB_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } elif [ cat in.$$ | grep From: | grep -o CCC.pl = "CCC.pl" ];then $ALTERMIME --input=in.$$ \ --disclaimer=$CCC_pl_file \ --disclaimer-html=$CCC_pl_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } elif [ cat in.$$ | grep From: | grep -o CCC.dk = "CCC.dk" ];then $ALTERMIME --input=in.$$ \ --disclaimer=$CCC_dk_file \ --disclaimer-html=$CCC_dk_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } else $ALTERMIME --input=in.$$ \ --disclaimer=$else_file \ --disclaimer-html=$else_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } fi $SENDMAIL "$@" <in.$$ exit $? kann mir jemand sagen, was ich hier falsch gemacht habe? vielen Dank! lg xucha
DevilDawn Geschrieben 7. Februar 2007 Geschrieben 7. Februar 2007 Hallo, ich versuche mich gerade an einem Skript, welches aber irgendwie nicht ausgefĂŒhrt wird. Fehlermeldung wĂ€re hilfreich. sh -x scriptname wirkt auch oft wunder Das cat > datei zum anlegen mĂŒsste das Script zum stehen bringen, da cat kein input gegeben wurde. Zum Anlegen von Files gibts touch.
xkl Geschrieben 7. Februar 2007 Geschrieben 7. Februar 2007 Das cat > datei zum anlegen mĂŒsste das Script zum stehen bringen, da cat kein input gegeben wurde. Das Cat funktioniert, er legt das file mit dem mail inhalt an(wird von Postfix ĂŒbergeben). Nur die If Bedingungen scheinen nicht so zu wollen wie sie sollen Syntaktische Fehler gibt es keine.
Schlaubi Geschrieben 7. Februar 2007 Geschrieben 7. Februar 2007 @DevilDawn: cat lieĂt defaultmĂ€Ăig von stdin. @xucha: Abgesehen davon, dass Dein Code alles andere als gut lesbar ist, ist er auch noch ein Mix aus Möglichkeiten If-Abfragen in der Bash zu realisieren. An Deinem Skript kann man noch so einiges "optimieren". Aber zu Anfangs, schreib bitte mal derartige if-Abfragen wie folgt um: Um Dich nicht komplett zu verwirren (weil wirklich einiges verbesserungswĂŒrdig und falsch ist), zeige ich Dir "nur" den nĂ€chsten Schritt, seh es als Schubs in die richtige Richtung an - vielleicht erkennst Du dann bereits selbst wo Deine Probleme liegen: alt: if [ cat in.$$ | grep From: | grep -o AAA.de = "AAA.de" ];then $ALTERMIME --input=in.$$ \ --disclaimer=$AAA_file \ --disclaimer-html=$AAA_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } neu: if [ "$(cat in.$$ | grep From: | grep -o AAA.de)" = "AAA.de" ];then $ALTERMIME --input=in.$$ \ --disclaimer=$AAA_file \ --disclaimer-html=$AAA_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } Auch so funktioniert dieses Konstrukt jedoch noch nicht, entweder Du nimmst "if, then, else" oder Du arbeitest mit && bzw. || - aber ich wĂŒrde mich fĂŒr eines von beiden entscheiden. Und noch ein kleiner Tipp - schonmal etwas von "useless use of cat" gehört? Nein? Dann wirds Zeit Desweiteren wĂŒrde ich Dir grundlegende Bash LektĂŒre nahe legen.
xucha Geschrieben 8. Februar 2007 Autor Geschrieben 8. Februar 2007 @DevilDawn: cat lieĂt defaultmĂ€Ăig von stdin. @xucha: Abgesehen davon, dass Dein Code alles andere als gut lesbar ist, ist er auch noch ein Mix aus Möglichkeiten If-Abfragen in der Bash zu realisieren. An Deinem Skript kann man noch so einiges "optimieren". Vielen Dank, es funktioniert jetzt soweit, aber wie du gesagt hast, man muss das ganze noch etwas optimieren. Auch so funktioniert dieses Konstrukt jedoch noch nicht, entweder Du nimmst "if, then, else" oder Du arbeitest mit && bzw. || - aber ich wĂŒrde mich fĂŒr eines von beiden entscheiden. warum nicht? Die || stehen ja im then teil, deswegen mĂŒsste es theoretisch funktionieren. Und noch ein kleiner Tipp - schonmal etwas von "useless use of cat" gehört? Nein? Dann wirds Zeit kannst du mir einen anderen Befehl vorschlagen, der die selbe Funktion hat??? Ansonsten danke nochmal...
tuxlux Geschrieben 20. Februar 2007 Geschrieben 20. Februar 2007 Hast Du an dem Script noch etwas gebastelt? LĂ€uft das jetzt sauber und stabil? Sitze nĂ€mlich vor dem selben Problem und könnte Deine/Eure Hilfe brauchen. Mehrere Domains, mehrere verschiedene Disclaimer / Signaturen in Kombination mit spamassassin und Abwesenheitsnotizen (vacation). Problem1: Postfixkonfiguration der Filter fĂŒr obige Anforderung Problem 2: Das altermime-Script (was kann man am hier geposteten Script noch optimieren)? Vielen Dank schon mal.
xkl Geschrieben 20. Februar 2007 Geschrieben 20. Februar 2007 Hast Du an dem Script noch etwas gebastelt? LĂ€uft das jetzt sauber und stabil? Sitze nĂ€mlich vor dem selben Problem und könnte Deine/Eure Hilfe brauchen. Mehrere Domains, mehrere verschiedene Disclaimer / Signaturen in Kombination mit spamassassin und Abwesenheitsnotizen (vacation). Problem1: Postfixkonfiguration der Filter fĂŒr obige Anforderung Problem 2: Das altermime-Script (was kann man am hier geposteten Script noch optimieren)? Vielen Dank schon mal. Hallo, gleiche Firma wie Xucha. Habe die Sachen auf der Arbeit. Die kann ich dir morgen zuschicken
tuxlux Geschrieben 20. Februar 2007 Geschrieben 20. Februar 2007 Hallo, gleiche Firma wie Xucha. Habe die Sachen auf der Arbeit. Die kann ich dir morgen zuschicken Das wÀre super. Vielen Dank
xkl Geschrieben 21. Februar 2007 Geschrieben 21. Februar 2007 Postfix mit Signaturen HowTo tar -xvzf altermime-0.3.7.tar.gz make make install useradd -r -c "Postfix Filter" -d /var/spool/filter filter groupadd -r filter mkdir /var/spool/filter chown filter.filter /var/spool/filter chmod 750 /var/spool/filter speichern disclaimer in /etc/postfix chgrp filter disclaimer chmod 750 disclaimer Erstellen der .txt mit 755 Rechten Anpassen der /etc/postfix/master.cf hier mit amavis(muss die mail wieder an den Postfix zurĂŒckgeben) smtp inet n - n - - smtpd -o content_filter=smtp-amavis:[127.0.0.1]:10024 127.0.0.1:10025 inet n - n - - smtpd -o content_filter=dfilt: smtp-amavisd unix - - n - 2 smtp dfilt unix - n n - - pipe flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} -- ${recipient} Disclaimer #!/bin/bash # Parameter ALTERMIME=/usr/local/bin/altermime ALTERMIME_DIR=/var/spool/altermime SENDMAIL=/usr/sbin/sendmail else_file=/etc/postfix/default_sig.txt else_htmlfile=/etc/postfix/default_sig_html.txt xxxx_file=/etc/postfix/xxxx_sig.txt xxxx_htmlfile=/etc/postfix/xxxx_sig_html.txt xxxx_file=/etc/postfix/xxxx_sig.txt xxxx_htmlfile=/etc/postfix/xxxx_sig_html.txt xxxx_pl_file=/etc/postfix/xxxx_pl_sig.txt xxxx_pl_htmlfile=/etc/postfix/xxxx_pl_sig_html.txt xxxx_dk_file=/etc/postfix/xxxx_dk_sig.txt xxxx_dk_htmlfile=/etc/postfix/xxxx_dk_sig_html.txt # Prozesssignale TEMPFAIL=75 UNAVAILABLE=69 # Wechsel ins altermime Verzeichnis cd $ALTERMIME_DIR || { echo $ALTERMIME_DIR does not exist; exit $TEMPFAIL; } # Remove wenn normalexit,sighup,sigint,sigquit,kill trap "rm -f in.$$" 0 1 2 3 15 # Anlegen Tempdatei cat >in.$$ || { echo Cannot write to $ALTERMIME_DIR; exit $TEMPFAIL; } if [ "$(cat in.$$ | grep -m 1 From: | grep -o xxxx.de)" = "xxxx.de" ];then $ALTERMIME --input=in.$$ \ --disclaimer=$xxxx_file \ --disclaimer-html=$xxxx_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } echo "Signatur xxxx.de eingefĂÆĂÂŒgt" >> /var/log/messages elif [ "$(cat in.$$ | grep -m 1 From: | grep -o xxxx.de)" = "Xxxx.de" ];then $ALTERMIME --input=in.$$ \ --disclaimer=$xxxx_file \ --disclaimer-html=$xxxx_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } echo "Signatur xxxx.de eingefĂÆĂÂŒgt" >> /var/log/messages elif [ "$(cat in.$$ | grep -m 1 From: | grep -o xxxx.pl)" = "xxxx.pl" ];then $ALTERMIME --input=in.$$ \ --disclaimer=$xxxx_pl_file \ --disclaimer-html=$xxxx_pl_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } echo "Signatur xxxx.pl eingefĂÆĂÂŒgt" >> /var/log/messages elif [ "$(cat in.$$ | grep -m 1 From: | grep -o xxxx.dk)" = "xxxx.dk" ];then $ALTERMIME --input=in.$$ \ --disclaimer=$xxxx_dk_file \ --disclaimer-html=$xxxx_dk_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } echo "Signatur xxxx.dk eingefĂÆĂÂŒgt" >> /var/log/messages else $ALTERMIME --input=in.$$ \ --disclaimer=$else_file \ --disclaimer-html=$else_htmlfile \ || { echo Message content rejected; exit $UNAVAILABLE; } echo "Signatur Else eingefĂÆĂÂŒgt" >> /var/log/messages fi $SENDMAIL "$@" <in.$$ exit $?
tuxlux Geschrieben 22. Februar 2007 Geschrieben 22. Februar 2007 Was haltet ihr von folgendem Konstrukt: statt bspw. [ "$(cat in.$$ | grep -m 1 From: | grep -o xxxx.de)" = "xxxx.de" ] entsprechend bei jedem if-Zweig folgendes: [ "$(grep -im1 'from:' in.$$ | tr A-Z a-z | grep -o xxxx.de)" = "xxxx.de" ]
xkl Geschrieben 22. Februar 2007 Geschrieben 22. Februar 2007 [ "$(grep -im1 'from:' in.$$ | grep -o xxxx.de)" = "xxxx.de" ] mĂŒsste auch ohne Probleme laufen oder
tuxlux Geschrieben 23. Februar 2007 Geschrieben 23. Februar 2007 [ "$(grep -im1 'from:' in.$$ | grep -o xxxx.de)" = "xxxx.de" ] mĂŒsste auch ohne Probleme laufen oder --- Solange im From-Teil des Headers die E-Mail-Adresse komplett aus Kleinbuchstaben besteht ja. Leider werden oftmals auch in E-Mail-Adressen Grossbuchstaben (Bsp.: Info@Firma.de) verwendet. Deshalb der "tr A-Z a-z" Eintrag.
tuxlux Geschrieben 5. MĂ€rz 2007 Geschrieben 5. MĂ€rz 2007 Wir haben hier mit altermime noch ein kleines Problem: bei html-mails wird der disclaimer (eingebunden mit --disclaimer-html) zwar angehĂ€ngt, enthĂ€lt aber an uns nicht nachvollziehbaren Stellen ein Gleichheitszeichen, gefolgt von einem Leerzeichen. Ebenso ist der angehĂ€ngte disclaimer in zwei Gleichheitszeichen eingebettet. So sieht es in etwa aus: = Mi= ster Beispiel Exa= mple-Street 123 MĂŒlldarstellung 12345 City = So soll es aussehen: Mister Beispiel Example-Street 123 MĂŒlldarstellung 12345 City An Umlauten oder Sonderzeichen kann es somit nicht liegen. Noch eine Frage: Wie sollte ein html-disclaimer formatiert sein? Reicht ein Mister Beispiel<br> Example-Street 123<br> MĂŒlldarstellung<br> 12345 City oder sollte die Datei ein komplettes html-GrundgerĂŒst enthalten? Vielen Dank fĂŒr Eure Antworten.
Empfohlene BeitrÀge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto fĂŒr unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden