Portál AbcLinuxu, 22. července 2025 15:37
Resil bych to pres Content filter, viz treba zde:
http://www.postfix.org/FILTER_README.html
Muzete si napsat dle toho odkazu jednoduchy skript, kteremu predate odesilatele a
prijemce z obalky. Jediny "problem" je umisteni radku X-... muzete ho dat hned jako prvni a nebo si s tim pohrat, akorat pozor na slozitejsi parsovani,aby to nemelo vliv na rychlost / zatez serveru.
Ja to resim nasledne:
(pokud bude potreba vysvetleni podam vecer, ted uz mam padla)
#!/bin/bash
# Konfigurace
SPOOL_DIR=/var/spool/filter
SENDMAIL="/usr/sbin/sendmail -G -i"
MY_DOMAIN="domena.cz"
NOUSER="nouser"
# Povolene site
IP[1]="192.168.1."
IP[2]="192.168.2."
IP[3]="192.168.3."
# Exit kody podle <sysexits.h>
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
# odeslani zpet do fronty Postfixu
send_mail(){
$SENDMAIL "$@" < $SPOOL_DIR/tmp.$$
}
# konec, uklid
rm_tmp(){
rm -f $SPOOL_DIR/tmp.$$
rm -f $SPOOL_DIR/in.$$
exit 0
}
# parsovani argumentu prikazove radky
parse_opt(){
let N=$#-1
ARRAY=( "$@" )
SENDMAIL_OPT="-f $2 --"
IPADDR=${ARRAY[$N]}
for ((X=3; X < N; X++))
do
STR=`echo -e\n ${ARRAY[$X]} | grep "@"`
if [ -n "$STR" ]
then
SENDMAIL_OPT="$SENDMAIL_OPT $STR"
fi
done
}
# osetreni signalu
trap "rm_tmp" 0 1 2 3 15
cat > $SPOOL_DIR/in.$$ || exit $EX_TEMPFAIL;
parse_opt $@;
# Filtrovani venkovni posty
SENDER=$2
DOMAIN=${SENDER##*@}
USER=${SENDER%%@*}
if [ "$DOMAIN" != "$MY_DOMAIN" ]
then
echo "X-EDP-Filter: Net [$IPADDR]" > $SPOOL_DIR/tmp.$$
cat $SPOOL_DIR/in.$$ >> $SPOOL_DIR/tmp.$$
send_mail $SENDMAIL_OPT;
exit $?
fi
# Filtrovani posty s vlastni domenou
IP_C=`echo $IPADDR | tr '.' ' ' | awk '{print $1"."$2"."$3"."}'`
RET=`echo -e\n ${IP[*]} | grep $IP_C`
if [ -n "$RET" ]
then
echo "X-MY-Filter: Yes [$IPADDR]" > $SPOOL_DIR/tmp.$$
else
echo "X-MY-Filter: No [$IPADDR]" > $SPOOL_DIR/tmp.$$
fi
cat $SPOOL_DIR/in.$$ >> $SPOOL_DIR/tmp.$$
send_mail $SENDMAIL_OPT;
exit $?
smtpd_recipient_restrictions = check_recipient_access pcre:/etc/postfix/recipient_access smtpd_data_restrictions = check_sender_access pcre:/etc/postfix/sender_accessa vytvoříl souboru s obsahem:
/etc/postfix/sender_access: /(.*)/ prepend X-Envelope-From: <$1> /etc/postfix/recipient_access: /(.*)/ prepend X-Envelope-To: <$1>
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.