2 мая 2012 г.

Извещение о поступившей почте Postfix через jabber (sendxmpp)



Всё решается через Postfix After-Queue Content Filter, откуда и была взята основа для скрипта и настройки master.cf. В процессе создания скрипта мне очень помогли статьи о sed и sendxmpp.

sed, которым я до этого не пользовался, меня восхитил сверх всякой меры.

файл dict - текстовый и представляет собой пары имя пользователя почты и имя пользователя jabber, разделенные пробелом. В поле from я сегодня заметил глюк, так что нужно будет допилить. Стыдно не знать regexp'ов, но я исправлюсь.

P.S. Оказывается в скрипт передаются адреса отправителя и получателя, так что нужно всё переделать и внимательнее читать документацию.

Вот, собственно, сам скрипт

#!/bin/bash
# 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=/home/filter
SENDMAIL="/usr/sbin/sendmail -G -i" # NEVER NEVER NEVER use "-t" here.
# Exit codes from
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; }
$SENDMAIL "$@"
to=`echo $4 | sed 's/@crb.local//'`
from=$2
jid=`sed "/^$to */!d; s///; q" dict`
echo Вам письмо от $from | /usr/bin/sendxmpp -j crb.local:5222 -u USERNAME -p PASSWORD $jid@crb.local
exit $?

Поскольку blogger режет код, по ссылке я выложил текст скрипта.