Mail schrumpft auf dem weg vom Server auf den PC

Christian Boltz postfixbuch at cboltz.de
So Dez 11 17:46:12 CET 2022


Hallo Uwe, hallo zusammen,

Am Freitag, 9. Dezember 2022, 09:46:58 CET schrieb Uwe Drießen:
> for i in `grep -i  "^from:" /var/mail/virtual/$domain/$user/cur/* |cut
> -d'<' -f2|cut -d'>' -f1`; do echo -e "$i \t\t\t\t\t550 reject we have
> no more sex" >/etc/postfix/maps/sexspamer ; done | cat 
> /etc/postfix/maps/sexspamer|sort | uniq >/etc/postfix/maps/sexspamer2|
> cp -a /etc/postfix/maps/sexspamer2
> /etc/postfix/maps/sexspamer |postmap /etc/postfix/maps/sexspamer |
> postfix reload
> 
> kürzere schreibweise und besser funktion nehm ich natürlich gerne :-)

Du hast es nicht anders gewollt ;-)


Die for-Schleife ist überflüssig, die cuts und echo kann sed besser.
Davon abgesehen bekommst Du einen useless use of cat-Award (sort kann 
selbst lesen), und sort -u ersetzt uniq.

Außerdem frage ich mich, warum Du alle Befehle mit einer Pipe verbunden 
hast. Bei den meisten (außer grep + sed) ist das unnötig.

Dein Script funktioniert übrigens nur mit sowas wie
    From: foo <foo at example.com>
aber nicht mit
    From: foo at example.com
Das behebt die zweite Hälfte meines sed-Befehls (nach dem Semikolon).


grep -i  "^from:" /var/mail/virtual/$domain/$user/cur/* |  \
    sed 's/.*<\(.*\)>.*/\1\t\t\t550 reject go away/ ; s/^From:\s*\(.*\)$/\1\t\t\t550 reject go away/' >>/etc/postfix/maps/sexspamer

sort -u /etc/postfix/maps/sexspamer > /etc/postfix/maps/sexspamer2
cp -a /etc/postfix/maps/sexspamer2 /etc/postfix/maps/sexspamer
postmap /etc/postfix/maps/sexspamer
postfix reload


Wenn Du das Schreiben der Datei sexspamer atomar haben willst, geht auch
(braucht dann aber ein cat)

{
    grep -i  "^from:" /var/mail/virtual/$domain/$user/cur/* |  \
        sed 's/.*<\(.*\)>.*/\1\t\t\t550 reject go away/ ; s/^From:\s*\(.*\)$/\1\t\t\t550 reject go away/' 
    cat /etc/postfix/maps/sexspamer
} | sort -u >/etc/postfix/maps/sexspamer2

cp -a /etc/postfix/maps/sexspamer2 /etc/postfix/maps/sexspamer
postmap /etc/postfix/maps/sexspamer
postfix reload


Statt des   cp -a   würde ich eher   mv   nehmen, aber das nur am Rand.


Alles ungetestet, sollte aber funktionieren ;-)

Ach ja,   set -o pipefail   und   set -e   am Anfang des Scripts können 
nicht schaden ;-)


Gruß

Christian Boltz
-- 
AV is homeopathy for computers: This software was in contact with mal-
ware in the past, so it'll recognize other malware in the future. $79
[https://twitter.com/thegrugq/status/297177182848049152]





Mehr Informationen über die Mailingliste Postfixbuch-users