Назад | Перейти на главную страницу

Dovecot HTTP POST

Я использую почтовый сервер Dovecot и postfix на CentOS, который обслуживает множество виртуальных хостов, и теперь я ищу около часа и читаю еще много полезного, например, полного мусорного материала о том, как заставить все входящие письма одному почтовому пользователю в каждом домене, например :

http-post@* //(any existing allowed host)

доставляться как HTTP POST на фиксированный URL, а не в почтовый ящик. но я не могу найти никакой информации, что было бы правильным способом сделать это. Я уже пробовал подход со стороны постфикса тех же почтовых доменов, но безуспешно. Прямо сейчас я читаю о Dovecot и Sieve, но мне кажется, что мне предстоит много чтения, и я не уверен, что пойду в правильном направлении. Для разработки сторонних приложений и целей тестирования я создал и использовал небольшой сценарий sh для прослушивания почты и отправки HTTP POST, но теперь, когда все кажется готовым к производству, я застрял.

Как я могу добиться этого правильным путем?

Так что я все еще в поисках правильного пути, но для тех, кто сталкивается с подобным вопросом, вот мой рабочий грязный метод :)

1. Добавьте псевдоним в / etc / aliases

#for my coal for all http-post user under any domain
http-post: |/etc/postfix/mailworker.sh
# or you can make it for specific email
http-post@example.com: |/etc/postfix/mailworker.sh
# or forward it to mail and script
http-post@example.com: your@email.com,|/etc/postfix/mailworker.sh

2. Применить

..]# newaliases
..]# service postfix restart

3. Создайте файл и папку tmp.

..]# mkdir /tmp/mailworker
..]# vi /etc/postfix/mailworker.sh

Содержимое файла

#!/bin/bash
cd /tmp/mailworker
read mailfrom
read mailreturnpath
# Could read more headers individually 

cat > data-$$
messageFull=`cat data-$$`
messageSafe=$(echo -ne $messageFull | base64);

# Here you do anything you want with email
# As i mentioned for testing I do something very bad here ;) so don't ever do that on any production environment
mysql -h localhost -u myusername -pMyPass1 mydatabase -e "INSERT INTO mytable (id,insdate,mailfrom,mailreturnpath,message) values(NULL,NULL,'$mailfrom','$mailreturnpath','$messageSafe');"
rm -f /tmp/mailworker/data-$$

И это все!

но я ищу, как сделать это чистым и безопасным способом, поэтому у меня есть разные причудливые идеи, что делать с электронными письмами :), например, очистить сообщение и перенаправить его в веб-сокет, который используется моим внутренним чатом и так далее. ..

Итак, вы пытаетесь фильтровать всю почту в домене для одного пользователя или только всю нежелательную почту?

Первое, что вы можете сделать со всеми псевдонимами в своем MTA. Postfix позволит вам отправлять почту по пользователю / домену / транспорту в скрипт, вероятно, это хорошее место для Начало..

Второй вариант лучше сделать с помощью программы, которая оценивает вашу нежелательную почту, у amavisd-new есть final_spam_destiny, spamasssasin можно подключить к fetchmail или .procrc. Сито - еще один вариант, хотя это уже довольно поздно.