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