URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 96743
[ Назад ]

Исходное сообщение
"Postfix. Запуск скрипта при получении письма на ящик."

Отправлено km_zed , 18-Ноя-16 16:04 
Добрый день.

Нужна помощь или консультация знающих людей. Сервер на Centos, поставил и сделал базовую настройку Postfix. Теперь стоит задача настроить Postfix так, чтобы при получении письма отправленному по определенному адресу, например test@mydomain.ru, запускался скрипт. Или же настроить Postfix так, чтобы он принятое письмо сохранял в файл, а дальше incron'ом запускать скрипт.

Перелопатил кучу инфы, но толком мне могу понять как правильно настроить Posfix.


Содержание

Сообщения в этом обсуждении
"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено omnomnin , 18-Ноя-16 16:27 
> Добрый день.
> Нужна помощь или консультация знающих людей. Сервер на Centos, поставил и сделал
> базовую настройку Postfix. Теперь стоит задача настроить Postfix так, чтобы при
> получении письма отправленному по определенному адресу, например test@mydomain.ru, запускался
> скрипт. Или же настроить Postfix так, чтобы он принятое письмо сохранял
> в файл, а дальше incron'ом запускать скрипт.
> Перелопатил кучу инфы, но толком мне могу понять как правильно настроить Posfix.

ИМХО это задача не для MTA (postfix) а для LDA (напр dovecot + sieve)
google:// dovecot sieve run shell script


"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено km_zed , 18-Ноя-16 16:51 
>> Добрый день.
>> Нужна помощь или консультация знающих людей. Сервер на Centos, поставил и сделал
>> базовую настройку Postfix. Теперь стоит задача настроить Postfix так, чтобы при
>> получении письма отправленному по определенному адресу, например test@mydomain.ru, запускался
>> скрипт. Или же настроить Postfix так, чтобы он принятое письмо сохранял
>> в файл, а дальше incron'ом запускать скрипт.
>> Перелопатил кучу инфы, но толком мне могу понять как правильно настроить Posfix.
> ИМХО это задача не для MTA (postfix) а для LDA (напр dovecot
> + sieve)
> google:// dovecot sieve run shell script

Да, можно было бы и так сделать, но суть задачи еще в том, чтобы использовать по максимуму стандартные средства. И если они это могут, то надо сделать именно ими, хоть с другими средствами будет легче.


"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено keir , 20-Ноя-16 01:44 
> Да, можно было бы и так сделать, но суть задачи еще в
> том, чтобы использовать по максимуму стандартные средства. И если они это
> могут, то надо сделать именно ими, хоть с другими средствами будет
> легче.

postfix, dovecot, sieve - самые стандартные средства для обработки почты. Что вы хотите делать скриптом? Т.к. вызывать из postfix внешние скрипты - вовсе не стандартные средства...


"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено km_zed , 20-Ноя-16 19:43 
>> Да, можно было бы и так сделать, но суть задачи еще в
>> том, чтобы использовать по максимуму стандартные средства. И если они это
>> могут, то надо сделать именно ими, хоть с другими средствами будет
>> легче.
> postfix, dovecot, sieve - самые стандартные средства для обработки почты. Что вы
> хотите делать скриптом? Т.к. вызывать из postfix внешние скрипты - вовсе
> не стандартные средства...

Подразумевается старт ftp сервера, когда приходит письмо на определенный адрес. Желательно ограничиться Postfix'ом. Но если никак, то придется работать с dovecot и sieve.


"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено _ , 22-Ноя-16 18:18 
> Подразумевается старт ftp сервера, когда приходит письмо на определенный адрес.

Яростно зашуршал попкорном.
А не озвучишь бизнескейс? Ну то есть ответ на вопрос "а напуркуа всё это?!"


"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено Bootmen , 21-Ноя-16 04:27 
>> Да, можно было бы и так сделать, но суть задачи еще в
>> том, чтобы использовать по максимуму стандартные средства. И если они это
>> могут, то надо сделать именно ими, хоть с другими средствами будет
>> легче.
> postfix, dovecot, sieve - самые стандартные средства для обработки почты. Что вы
> хотите делать скриптом? Т.к. вызывать из postfix внешние скрипты - вовсе
> не стандартные средства...

Aliases это задокументированное средство постфикса.
У меня например в нем подцеплены скрипты на перле для узеров которым нужно получать
SMS о прибытии почты.



"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено Bootmen , 18-Ноя-16 16:28 
> Добрый день.
> Нужна помощь или консультация знающих людей. Сервер на Centos, поставил и сделал
> базовую настройку Postfix. Теперь стоит задача настроить Postfix так, чтобы при
> получении письма отправленному по определенному адресу, например test@mydomain.ru, запускался
> скрипт. Или же настроить Postfix так, чтобы он принятое письмо сохранял
> в файл, а дальше incron'ом запускать скрипт.
> Перелопатил кучу инфы, но толком мне могу понять как правильно настроить Posfix.

Самый простой способ:
добавить в файл aliases следующую строку:
#
user:  user, "|/etc/postfix/script"
# user это имя пользователя (user@mydomen.ru)
# В кавычках прописан путь к скрипту
# user,  это если письмо еще должно попасть в ящик узера
Не забудтье команду newaliases
Если данные пользователей хранятся в мускуле или ldap
то нужно сделать еще несколько других телодвижений.
Сохранение в файл текста можно поручить самому скрипту.
Если скрипт в bash то вначале его вписать примерно такое:
#
mesg=$1
echo $mesg >> /etc/postfix/file
#


"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено km_zed , 18-Ноя-16 16:56 
>[оверквотинг удален]
> Самый простой способ:
> добавить в файл aliases следующую строку:
> #
> user:  user, "|/etc/postfix/script"
> # user это имя пользователя (user@mydomen.ru)
> # В кавычках прописан путь к скрипту
> # user,  это если письмо еще должно попасть в ящик узера
> Не забудтье команду newaliases
> Если данные пользователей хранятся в мускуле или ldap
> то нужно сделать еще несколько других телодвижений.

Мускул не используется и хотелось бы обойтись без него.

Получается строка:
   user:  user, "|/etc/postfix/script"
Будет выглядеть:
   user: test@mydomain.ru, "|/etc/postfix/script"?
И если письмо не обязательно должно упасть, то user можно не указывать?
   user:"|/etc/postfix/script"
Правильно понимаю или оба user меняем на test@mydomain.ru?


"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено Bootmen , 18-Ноя-16 17:02 
>[оверквотинг удален]
>> Если данные пользователей хранятся в мускуле или ldap
>> то нужно сделать еще несколько других телодвижений.
> Мускул не используется и хотелось бы обойтись без него.
> Получается строка:
>    user:  user, "|/etc/postfix/script"
> Будет выглядеть:
>    user: test@mydomain.ru, "|/etc/postfix/script"?
> И если письмо не обязательно должно упасть, то user можно не указывать?
>    user:"|/etc/postfix/script"
> Правильно понимаю или оба user меняем на test@mydomain.ru?

Нет. Надо писать только имя (а не полный адрес)
Для уточнения почитайте man aliases
Повторяюсь: работает только если узеры системные а не лдап и мускуле.



"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено km_zed , 18-Ноя-16 17:07 
>[оверквотинг удален]
>> Получается строка:
>>    user:  user, "|/etc/postfix/script"
>> Будет выглядеть:
>>    user: test@mydomain.ru, "|/etc/postfix/script"?
>> И если письмо не обязательно должно упасть, то user можно не указывать?
>>    user:"|/etc/postfix/script"
>> Правильно понимаю или оба user меняем на test@mydomain.ru?
> Нет. Надо писать только имя (а не полный адрес)
> Для уточнения почитайте man aliases
> Повторяюсь: работает только если узеры системные а не лдап и мускуле.

Я Вас понял, буду пробовать, большое спасибо.


"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено Gglobbus , 21-Ноя-16 07:41 
Самое простое делать bcc на локльный ящик, все письма будут складываться локально в папку пользователя, а дальше крути скриптом их как хочешь.

"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено Bootmen , 21-Ноя-16 08:27 
> Самое простое делать bcc на локльный ящик, все письма будут складываться локально
> в папку пользователя, а дальше крути скриптом их как хочешь.

Через aliases проще.
Скрипт срабатывает сразу. И само сообщение подается ему как аргумент.
После BBC надо мудрить еще через cron запуск скрипта с парсингом майлдир.



"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено km_zed , 01-Дек-16 11:43 
>[оверквотинг удален]
> # user,  это если письмо еще должно попасть в ящик узера
> Не забудтье команду newaliases
> Если данные пользователей хранятся в мускуле или ldap
> то нужно сделать еще несколько других телодвижений.
> Сохранение в файл текста можно поручить самому скрипту.
> Если скрипт в bash то вначале его вписать примерно такое:
> #
> mesg=$1
> echo $mesg >> /etc/postfix/file
> #

Ваш совет был очень интересен, но к сожалению не вышло сделать так, postfix постоянно ругался, что нет прав на запуск скрипта, хотя все права раздал. Сделал по другому, все письма, приходящие локальному юзверю складываются в файл /var/spool/mail/*user*. Натравил incron на этот файл и он уже запускает скрипт. Спасибо за совет, возможно он еще пригодится или в свободное время сяду разбираться в чем проблема:)


"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено Bootmen , 01-Дек-16 16:01 
>[оверквотинг удален]
>> #
>> mesg=$1
>> echo $mesg >> /etc/postfix/file
>> #
> Ваш совет был очень интересен, но к сожалению не вышло сделать так,
> postfix постоянно ругался, что нет прав на запуск скрипта, хотя все
> права раздал. Сделал по другому, все письма, приходящие локальному юзверю складываются
> в файл /var/spool/mail/*user*. Натравил incron на этот файл и он уже
> запускает скрипт. Спасибо за совет, возможно он еще пригодится или в
> свободное время сяду разбираться в чем проблема:)

Да помнится тоже возникали проблемы с правами.
Иногда смешные. Типа на выполнение скрипта все права нормальные. А на папку в которой
он лежит прав нет. Или на папку куда сохраняются tmp файлы создаваемые скриптом.


"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено fantom , 06-Дек-16 14:58 
>[оверквотинг удален]
>> postfix постоянно ругался, что нет прав на запуск скрипта, хотя все
>> права раздал. Сделал по другому, все письма, приходящие локальному юзверю складываются
>> в файл /var/spool/mail/*user*. Натравил incron на этот файл и он уже
>> запускает скрипт. Спасибо за совет, возможно он еще пригодится или в
>> свободное время сяду разбираться в чем проблема:)
> Да помнится тоже возникали проблемы с правами.
> Иногда смешные. Типа на выполнение скрипта все права нормальные. А на папку
> в которой
> он лежит прав нет. Или на папку куда сохраняются tmp файлы создаваемые
> скриптом.

Ага, или selinux подгадил....


"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено fevil , 08-Дек-16 16:15 
мне кажется тут можно использовать
content_filter либо filter, сейчас точно не вспомню но суть такая что все письма проверяются фильтром на предмет нужного получателя, и в случае совпадения запускает скрипт.
Сейчас пользуюсь exim быстро проверить не могу, но когда-то делал подобное в postfix. Правда я фильтровал по теме письма.



"Postfix. Запуск скрипта при получении письма на ящик."
Отправлено Николай , 10-Фев-25 18:00 
Тема старая, но не менее актуальная, потому что я со всего размаха тоже на нее напоролся  :-)
Хотелось бы, что бы Postfix при получении письма от определенного адресата запускал какой-нибудь скрипт.
Да, вполне возможно, что на Procmail это легко бы получилось, но мне очень бы не хотелось в решение задачи вводить дополнительную сущность.
Как и топикстартеру, хотелось бы использовать для этого возможности самого Postfix.
Использовал совет Bootmen, но сколько не сражался с альясами, скрипт ну никак не желает запускаться.
Права скрипта проверял, подбирал всякие. Что тут еще может быть причиной?

Debian 12, Postfix 3.7.11