Добрый день.Нужна помощь или консультация знающих людей. Сервер на Centos, поставил и сделал базовую настройку Postfix. Теперь стоит задача настроить Postfix так, чтобы при получении письма отправленному по определенному адресу, например test@mydomain.ru, запускался скрипт. Или же настроить Postfix так, чтобы он принятое письмо сохранял в файл, а дальше incron'ом запускать скрипт.
Перелопатил кучу инфы, но толком мне могу понять как правильно настроить Posfix.
> Добрый день.
> Нужна помощь или консультация знающих людей. Сервер на Centos, поставил и сделал
> базовую настройку Postfix. Теперь стоит задача настроить Postfix так, чтобы при
> получении письма отправленному по определенному адресу, например test@mydomain.ru, запускался
> скрипт. Или же настроить Postfix так, чтобы он принятое письмо сохранял
> в файл, а дальше incron'ом запускать скрипт.
> Перелопатил кучу инфы, но толком мне могу понять как правильно настроить Posfix.ИМХО это задача не для MTA (postfix) а для LDA (напр dovecot + sieve)
google:// dovecot sieve run shell script
>> Добрый день.
>> Нужна помощь или консультация знающих людей. Сервер на Centos, поставил и сделал
>> базовую настройку Postfix. Теперь стоит задача настроить Postfix так, чтобы при
>> получении письма отправленному по определенному адресу, например test@mydomain.ru, запускался
>> скрипт. Или же настроить Postfix так, чтобы он принятое письмо сохранял
>> в файл, а дальше incron'ом запускать скрипт.
>> Перелопатил кучу инфы, но толком мне могу понять как правильно настроить Posfix.
> ИМХО это задача не для MTA (postfix) а для LDA (напр dovecot
> + sieve)
> google:// dovecot sieve run shell scriptДа, можно было бы и так сделать, но суть задачи еще в том, чтобы использовать по максимуму стандартные средства. И если они это могут, то надо сделать именно ими, хоть с другими средствами будет легче.
> Да, можно было бы и так сделать, но суть задачи еще в
> том, чтобы использовать по максимуму стандартные средства. И если они это
> могут, то надо сделать именно ими, хоть с другими средствами будет
> легче.postfix, dovecot, sieve - самые стандартные средства для обработки почты. Что вы хотите делать скриптом? Т.к. вызывать из postfix внешние скрипты - вовсе не стандартные средства...
>> Да, можно было бы и так сделать, но суть задачи еще в
>> том, чтобы использовать по максимуму стандартные средства. И если они это
>> могут, то надо сделать именно ими, хоть с другими средствами будет
>> легче.
> postfix, dovecot, sieve - самые стандартные средства для обработки почты. Что вы
> хотите делать скриптом? Т.к. вызывать из postfix внешние скрипты - вовсе
> не стандартные средства...Подразумевается старт ftp сервера, когда приходит письмо на определенный адрес. Желательно ограничиться Postfix'ом. Но если никак, то придется работать с dovecot и sieve.
> Подразумевается старт ftp сервера, когда приходит письмо на определенный адрес.Яростно зашуршал попкорном.
А не озвучишь бизнескейс? Ну то есть ответ на вопрос "а напуркуа всё это?!"
>> Да, можно было бы и так сделать, но суть задачи еще в
>> том, чтобы использовать по максимуму стандартные средства. И если они это
>> могут, то надо сделать именно ими, хоть с другими средствами будет
>> легче.
> postfix, dovecot, sieve - самые стандартные средства для обработки почты. Что вы
> хотите делать скриптом? Т.к. вызывать из postfix внешние скрипты - вовсе
> не стандартные средства...Aliases это задокументированное средство постфикса.
У меня например в нем подцеплены скрипты на перле для узеров которым нужно получать
SMS о прибытии почты.
> Добрый день.
> Нужна помощь или консультация знающих людей. Сервер на 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
#
>[оверквотинг удален]
> Самый простой способ:
> добавить в файл 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?
>[оверквотинг удален]
>> Если данные пользователей хранятся в мускуле или ldap
>> то нужно сделать еще несколько других телодвижений.
> Мускул не используется и хотелось бы обойтись без него.
> Получается строка:
> user: user, "|/etc/postfix/script"
> Будет выглядеть:
> user: test@mydomain.ru, "|/etc/postfix/script"?
> И если письмо не обязательно должно упасть, то user можно не указывать?
> user:"|/etc/postfix/script"
> Правильно понимаю или оба user меняем на test@mydomain.ru?Нет. Надо писать только имя (а не полный адрес)
Для уточнения почитайте man aliases
Повторяюсь: работает только если узеры системные а не лдап и мускуле.
>[оверквотинг удален]
>> Получается строка:
>> user: user, "|/etc/postfix/script"
>> Будет выглядеть:
>> user: test@mydomain.ru, "|/etc/postfix/script"?
>> И если письмо не обязательно должно упасть, то user можно не указывать?
>> user:"|/etc/postfix/script"
>> Правильно понимаю или оба user меняем на test@mydomain.ru?
> Нет. Надо писать только имя (а не полный адрес)
> Для уточнения почитайте man aliases
> Повторяюсь: работает только если узеры системные а не лдап и мускуле.Я Вас понял, буду пробовать, большое спасибо.
Самое простое делать bcc на локльный ящик, все письма будут складываться локально в папку пользователя, а дальше крути скриптом их как хочешь.
> Самое простое делать bcc на локльный ящик, все письма будут складываться локально
> в папку пользователя, а дальше крути скриптом их как хочешь.Через aliases проще.
Скрипт срабатывает сразу. И само сообщение подается ему как аргумент.
После BBC надо мудрить еще через cron запуск скрипта с парсингом майлдир.
>[оверквотинг удален]
> # user, это если письмо еще должно попасть в ящик узера
> Не забудтье команду newaliases
> Если данные пользователей хранятся в мускуле или ldap
> то нужно сделать еще несколько других телодвижений.
> Сохранение в файл текста можно поручить самому скрипту.
> Если скрипт в bash то вначале его вписать примерно такое:
> #
> mesg=$1
> echo $mesg >> /etc/postfix/file
> #Ваш совет был очень интересен, но к сожалению не вышло сделать так, postfix постоянно ругался, что нет прав на запуск скрипта, хотя все права раздал. Сделал по другому, все письма, приходящие локальному юзверю складываются в файл /var/spool/mail/*user*. Натравил incron на этот файл и он уже запускает скрипт. Спасибо за совет, возможно он еще пригодится или в свободное время сяду разбираться в чем проблема:)
>[оверквотинг удален]
>> #
>> mesg=$1
>> echo $mesg >> /etc/postfix/file
>> #
> Ваш совет был очень интересен, но к сожалению не вышло сделать так,
> postfix постоянно ругался, что нет прав на запуск скрипта, хотя все
> права раздал. Сделал по другому, все письма, приходящие локальному юзверю складываются
> в файл /var/spool/mail/*user*. Натравил incron на этот файл и он уже
> запускает скрипт. Спасибо за совет, возможно он еще пригодится или в
> свободное время сяду разбираться в чем проблема:)Да помнится тоже возникали проблемы с правами.
Иногда смешные. Типа на выполнение скрипта все права нормальные. А на папку в которой
он лежит прав нет. Или на папку куда сохраняются tmp файлы создаваемые скриптом.
>[оверквотинг удален]
>> postfix постоянно ругался, что нет прав на запуск скрипта, хотя все
>> права раздал. Сделал по другому, все письма, приходящие локальному юзверю складываются
>> в файл /var/spool/mail/*user*. Натравил incron на этот файл и он уже
>> запускает скрипт. Спасибо за совет, возможно он еще пригодится или в
>> свободное время сяду разбираться в чем проблема:)
> Да помнится тоже возникали проблемы с правами.
> Иногда смешные. Типа на выполнение скрипта все права нормальные. А на папку
> в которой
> он лежит прав нет. Или на папку куда сохраняются tmp файлы создаваемые
> скриптом.Ага, или selinux подгадил....
мне кажется тут можно использовать
content_filter либо filter, сейчас точно не вспомню но суть такая что все письма проверяются фильтром на предмет нужного получателя, и в случае совпадения запускает скрипт.
Сейчас пользуюсь exim быстро проверить не могу, но когда-то делал подобное в postfix. Правда я фильтровал по теме письма.
Тема старая, но не менее актуальная, потому что я со всего размаха тоже на нее напоролся :-)
Хотелось бы, что бы Postfix при получении письма от определенного адресата запускал какой-нибудь скрипт.
Да, вполне возможно, что на Procmail это легко бы получилось, но мне очень бы не хотелось в решение задачи вводить дополнительную сущность.
Как и топикстартеру, хотелось бы использовать для этого возможности самого Postfix.
Использовал совет Bootmen, но сколько не сражался с альясами, скрипт ну никак не желает запускаться.
Права скрипта проверял, подбирал всякие. Что тут еще может быть причиной?Debian 12, Postfix 3.7.11