Her gelen posta postasının gövdesinde bir komut yürütmek istiyorum.Tüm gelen postalar için bash komutunu çalıştır (Postfix)
afterqueue.sh
#!/bin/sh
# Simple shell-based filter. It is meant to be invoked as follows:
# /path/to/script -f sender recipients...
# Localize these. The -G option does nothing before Postfix 2.3.
INSPECT_DIR=/var/spool/filter
SENDMAIL="/usr/sbin/sendmail -G -i" # NEVER NEVER NEVER use "-t" here.
# Exit codes from <sysexits.h>
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
# Clean up when done or when aborting.
trap "rm -f in.$$" 0 1 2 3 15
# Start processing.
cd $INSPECT_DIR || {
echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
cat >in.$$ || {
echo Cannot save mail to file; exit $EX_TEMPFAIL; }
# Specify your content filter here.
sh /path/to/remove_links.sh <in.$$
$SENDMAIL "[email protected]" <in.$$
exit $?
remove_links: ...
DÜZENLEME
sed ':a;N;$!ba;s/=\n//g' /path-to/message-file | sed 's/</\n\</g' | sed -r '/'"$(sed -r 's/\\/\\\\/g;s/\//\\\//g;s/\^/\\^/g;s/\[/\\[/g;s/'\''/'\'"\\\\"\'\''/g;s/\]/\\]/g;s/\*/\\*/g;s/\$/\\$/g;s/\./\\./g' whitelist | paste -s -d '|')"'/! s/http/httx/g'
Ben Postfix After-Queue Content Filter ile mümkün olabileceğini düşünüyorum, ama bunu nasıl bilmiyorum .0
#!/bin/bash
sed ':a;N;$!ba;s/=\n//g' $1 | sed 's/</\n\</g' | sed -r '/'"$(sed -r 's/\\/\\\\/g;s/\//\\\//g;s/\^/\\^/g;s/\[/\\[/g;s/'\''/'\'"\\\\"\'\''/g;s/\]/\\]/g;s/\*/\\*/g;s/\$/\\$/g;s/\./\\./g' /path/to/whitelist | paste -s -d '|')"'/! s/http/httx/g'
elimle diyoruz eğer, çalışıyor, ama böyle /etc/postfix/master.cf eklerseniz:
# =============================================================
# service type private unpriv chroot wakeup maxproc command
# (yes) (yes) (yes) (never) (100)
# =============================================================
filter unix - n n - 10 pipe
flags=Rq user=filter null_sender=
argv=/path/to/afterqueue.sh -f ${sender} -- ${recipient}
postada herhangi bir değişiklik olmamıştır. aşağıdaki syslogd'yi:
Apr 13 15:14:08 rs211184 postfix/qmgr[7492]: 3FFDF23CB5F: from=<[email protected]>, size=4358, nrcpt=1 (queue active)
Apr 13 15:14:08 rs211184 postfix/pipe[7504]: 116E523CA8C: to=<[email protected]>, relay=filter, delay=0.2, delays=0.16/0/0/0.04, dsn=2.0.0, status=sent (delivered via filter service)
Apr 13 15:14:08 rs211184 postfix/qmgr[7492]: 116E523CA8C: removed
Apr 13 15:14:08 rs211184 postfix-local[7522]: postfix-local: [email protected], [email protected], dirname=/var/qmail/mailnames
Apr 13 15:14:08 rs211184 postfix/pipe[7521]: 3FFDF23CB5F: to=<[email protected]>, relay=plesk_virtual, delay=0.02, delays=0.01/0/0/0.01, dsn=2.0.0, status=sent (delivered via plesk_virtual service)
Apr 13 15:14:08 rs211184 postfix/qmgr[7492]: 3FFDF23CB5F: removed
Şimdi görüyorum; Yığın Taşması bunu "bağlantılı" bir soru olarak sağladı - dunno neden, ama şimdi daha net. http://stackoverflow.com/questions/36543377/find-and-replace-urls-in-postfix-files-linux-ubuntu?lq=1 – tripleee
izin vermedi açıkçası bir programlama hatası değil. Postfix kullanıcısı, manipüle etmeye çalıştığınız dizine yazma (veya muhtemelen okunan) erişiminden yoksundur. – tripleee
Tamam, izin reddedildi. Ancak, syslog'da herhangi bir hata olmamasına rağmen, filtre hala çalışmayacaktır ... düzenlenmiş soruya bakın. Ben beyaz liste şeyler yapmak gerekiyordu anlamak olsaydı – BP20