Привет!
Возможно вы уже сталкивались с таким, но я вот впервые, подскажите что почитать и в какую сторону идти.
У меня есть VDS сервер. на нем есть домен и организован почтовый сервер. Для просмотра почты я прикрутил туда biz.mail.ru
Теперь же у меня стоит задача чтобы когда приходит письмо на определенный майл - ботом в телеграм группу писать сообщение. С ботом проблем нет, это я смогу. Вопрос как правильно получать новое письмо.
У меня пока что возникло пару идей.
Первая - простым скриптом на python парсить количество писем в ящике через pop3, но тут нужно поставить cron на, например, каждую минуту. Во первых это ну так себе идея, во вторых хотелось бы побыстрее, чем в течении минуты, получать информацию о новом письме.
Вторая - это коллбеки. Однако вот тут я не знаю как к такому подойти, как настроить и есть ли вообще коллбеки для такой задачи?
Третья - по сути то же самое что и первое, но в цикле бесконечном, что тоже не очень для сервера думаю.
Так как у вас есть отдельный пользователь для этого то вы можете в /etc/aliases добавить строку вида
username: "|/usr/local/bin/processmail.php"
таким образом тело письма со всеми хедерами для пользователя username отправится через пайп скрипту /usr/local/bin/processmail.php
Elvis
@Dr_Elvis Автор вопроса, куратор тега Python
Очень интересно и выглядит ровно так, как мне и нужно. только немного не понял как данные передаются в скрипт? через пайп, но это как? аргументом? как мне принять его в скрипте?
Написано
Elvis
@Dr_Elvis Автор вопроса, куратор тега Python
для тестов вы можете в консоли делать
cat test.txt | mailproces.py
Написано
Elvis
@Dr_Elvis Автор вопроса, куратор тега Python
Владимир, да, с stdin всё получилось и при тестировании отрабатывает. Только теперь я не понимаю как настроить aliases. У меня есть пользователь, но к нему же не привязан ни домен, ни майл. я прописал vgbot: "|/home/bot/VGBot/test.py"
но после отправки на майл vgbot@domen.ru ничего не происходит. причем у меня не один домен на VDS, а несколько. как тут указать с какого майла нужно перенаправлять письма?
Elvis, алиас сработает при локальном приеме. То есть, когда система будет принимать почту для локального пользователя vgbot - она выполнит команду, соответственно нужно, чтобы юзеру, от имени которого работает почта (обычно mail или mailnull) был доступен данный скрипт, иначе он ругаться будет