Я использую почтовый сервер 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. Сито - еще один вариант, хотя это уже довольно поздно.