Для этого требуется:
centericq (поддерживает отсылание сообщений из командной строки)
exim4 (в качестве smtp сервера)
procmail (в качестве переходника между ними)
screen (для автозапуска centericq)
и пр.
Для начала настраиваем centericq как надо (icq# с паролем и т.д.), после чего пишем screenrc для его автозапуска: ~/.screenrc.cicq
Код: Выделить всё
startup_message off
screen 1 centericq
И добавляем строку
Код: Выделить всё
screen -dmS cicq -c ~/.screenrc.cicq
куда-либо в автозапуск.
Можно проверить, выполнив
Код: Выделить всё
echo "message text"|centericq -p icq -s msg -t "123456789"
где 123456789 - нужный icq#.
Далее: настраиваем exim4 как надо, главное - чтобы он отправлял почту локальным пользователям (user@localhost.localdomain или что-то вроде того). В debian это без проблем делается через "dpkg-reconfigure exim4-config".
Ставим procmail и в ~/.forward пишем:
Код: Выделить всё
|/usr/bin/procmail
В результате чего почта, приходящая к текущему пользователю через exim будет обрабатываться procmail'ом.
Чтобы procmail делал то что надо, пишем ~/.procmailrc
Пример .procmailrc, использующийся у меня:
Код: Выделить всё
PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin
MAILDIR=$HOME/mail
DEFAULT=$MAILDIR/mbox
LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$HOME/.lockmail
:0
* ^Subject: [0-9][0-9][0-9][0-9][0-9]+$
|~/mailtest
И прилагающийся к нему исполняемый ~/mailtest :
Код: Выделить всё
#!/bin/bash
echo >> ~/mailtest.log
echo "mailtest at `date`" >> ~/mailtest.log
subj=''
read tmp1
until [[ $tmp1 = '' ]]
do
subj="$subj""`echo $tmp1|egrep "^Subject: "|awk '{print $2}'`"
read tmp1
done
echo "subject is: $subj" >> ~/mailtest.log
cat|centericq -p icq -s msg -t $subj >> ~/mailtest.log
Note: Метод парсинга mail сообщения тут точно не идеальный, просто sed я к сожалению пока ещё не знаю... Так что если есть предложения получше - welcome.
После всего этого можно отправлять через SMTP exim'а сообщение на "<пользователь>@<сервер>" с номером icq в теме и сообщением в теле письма.
P.S. Что-то я возможно пропустил или написал неправильно, т.к. писал частично по памяти.
Предложения по улучшению принимаются т.к. эта система у меня сейчас используется.
btw, можно сделать отправление не только по icq... но это точно требует более сложного разбирания скриптов, что у меня только в далёком плане.
Также хотелось бы найти способ и обратной передачи - icq->mail. Что потребует перекапывания centericq.