Как безболезненно получать почту в linux и пересылать ее в Rails? - PullRequest
5 голосов
/ 24 мая 2009

Я всю ночь гуглил постфиксные инструкции, но все же я не мог понять , как мне удается получать почту на linux-сервере (точнее - Ubuntu).

Все, что мне нужно, это универсальный почтовый ящик, который получает все электронные письма и передает их в скрипт ruby ​​(который затем передает его в Rails, конечно). Мне удалось настроить postfix для отправки электронных писем некоторое время назад, и я должен сказать - это было совсем не больно, я почти ничего не делал, кроме фактической установки.

Не могли бы вы предложить хороший Howto, или рецепт, или альтернативный простой в настройке почтовый сервер, который мог бы решить проблему?

Ответы [ 3 ]

6 голосов
/ 24 мая 2009

Выберите учетную запись, для которой вы хотите получать почту, которая пересылается на ваш скрипт на Ruby. Отредактируйте файл .forward в домашнем каталоге этого скрипта так, чтобы он прочитал

"|/path/to/my/ruby/script"

Когда postfix доставляет почту в учетную запись, он запускает сценарий с разрешениями назначенного пользователя и предоставляет почту при стандартном вводе. В зависимости от того, что вы делаете с почтой, вы можете захотеть ее аутентифицировать, чтобы скрипт знал, что это действительно от вас. (Например, заголовок с солью и SHA1-хэш соли + пароль.)

Вот реальный пример из моей собственной почтовой системы:

"|/home/nr/bin/filtermail /home/nr/machine/x86-bsd/bin/luapipe /home/nr/machine/x86-bsd/bin/safe-slocal 2>>/home/nr/slocal.log 1>&2"

Это относится к сценарию оболочки, который затем вызывает программы Lua и C для правильной утилизации почты.

5 голосов
/ 24 мая 2009

Этот ответ состоит из двух частей, ответ Нормана Рэмси охватывает вторую часть: передачу электронного письма сценарию для обработки. Первая часть - настройка Postfix для получения электронной почты. Так как вам нужно поймать все, вы можете поместить что-то вроде этого в / etc / postfix / aliases

@yourdomain.com localuser

И «localuser» - это имя учетной записи в вашей системе, которая имеет

/ дом / Локальный_пользователь / .forward

, которая содержит команду (см. Ответ Нормана). Или вы можете оставить все это в Postfix

/ и т.д. / постфикса / псевдонимы:

@yourdomain.com | / path / to / your / script

Это отправит всю электронную почту, отправленную на @ yourdomain.com, и отправит ее вашему сценарию для обработки. Имейте в виду, что сценарий будет выполняться как пользователь postfix, поэтому вам необходимо убедиться, что ваша среда настроена надлежащим образом (например, вы не полагаетесь на определенный $ PATH, который есть у вашей обычной учетной записи пользователя). Пользователь postfix, вероятно, имеет очень простую среду (например, может даже не иметь / usr / local / bin в своей переменной $ PATH)

0 голосов
/ 12 декабря 2009

Также ознакомьтесь со статьей Джейсона Сайфера для более подробной информации.

http://jasonseifer.com/2009/04/24/receving-email-with-rails

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