Меня попросили предоставить способ загрузки входящих сообщений электронной почты, управления некоторой частью текста, а затем пересылки его на веб-сервер для чтения клиентом. По сути, перехватить почту, пропустить ее через другой процесс, и как только этот процесс будет завершен - это важно - бросить его на веб-сервер, точно так же, как это должно было произойти до перехвата моего процесса.
Помимо самого файла электронной почты мне также нужно прочитать информацию об учетной записи из базы данных MySQL.
Почтовый сервер - Postfix / Dovecot, а веб-сервер - Apache, работающий на CentOs. Они могли работать на одном сервере или нет. Я не хочу выполнять работу сервера и сканировать на вирусы или выполнять какую-либо аутентификацию - все это уже должно было произойти.
Я изучил некоторые идеи кеширования или даже использовал NginX в качестве прокси-сервера IMAP, но я думаю, что это похоже на попытку убить муху из дробовика. Что еще хуже, я на самом деле не веб-человек, поэтому я не знаю всех тонкостей Apache.
Есть ли у кого-нибудь идеи относительно того, когда лучше всего перехватить это электронное письмо, прежде чем оно беспрепятственно попадет в браузер?
Любая помощь приветствуется.
Большое спасибо
Самый простой способ - выполнить LDA не напрямую из postfix, а, скорее, путем вызова dovecot_lda, заключенного в сценарий some.
Давайте изменим конфигурацию постфикса:
mailbox_command = /some/path/to/the/script.sh "$SENDER" "$RECIPIENT"
Пусть script.sh содержит такой код:
#!/bin/sh
MSG=$(cat < &0)
ARG1=$1
ARG2=$2
# let's deliver message as usual
echo "$MSG" | /usr/lib/dovecot/dovecot-lda -f $ARG1 -a $ARG2
# from here we can do anything we want
echo "$MSG" > /some/path/to/the/fresh/$$.copy
echo $MSG | while read line
do
if [ $line != '' ]
then
echo $line >> /some/other/file.txt
else
echo '---------------------' >> /some/other/file.txt
break
fi
done
#####
Тогда ваше программное обеспечение, которое генерирует веб-страницы, должно только прочитать все от / some / path / до / the / fresh / * и включить их в html.
Вы, наверное, захотите взглянуть на Амавис. Он в основном рекламируется как антивирус, но вы можете отключить его и запустить любой скрипт Perl, который захотите. Вы найдете включенные примеры сценариев, некоторые из которых содержат вызов базы данных. Он очень хорошо интегрируется с Postfix / Dovecot.