howto: создание "туннеля" email->icq (exim4, centericq, fetchmail)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
HoverHell
Сообщения: 157
Статус: <mindwalker>

howto: создание "туннеля" email->icq

Сообщение HoverHell »

Возникла у меня недавно необходимость создать (для автоматизации) возможность отправлять icq сообщения smtp клиентом (febootimail из под винды например).
Для этого требуется:
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.
Debian unstable/experimental!
Спасибо сказали:
Аватара пользователя
HoverHell
Сообщения: 157
Статус: <mindwalker>

Re: howto: создание "туннеля" email->icq

Сообщение HoverHell »

Дополнение:
Как правильнее (надёжнее) запускать centericq при старте системы я описал здесь.
Debian unstable/experimental!
Спасибо сказали:
Ответить