У меня есть сервер (example.com), работающий в Debian, который не настроен для получения электронных писем (по крайней мере, я никогда не делал для этого никаких усилий). Насколько я понимаю, мне просто нужно создать запись MX DNS, указывающую на example.com, чтобы иметь возможность получать электронные письма.
Теперь, когда я получаю электронные письма, я хочу, чтобы заголовки + тело были переданы в сценарий (возможно, Go), который проанализирует контент и добавит его в базу данных).
Я слышал, что могу использовать procmail, но разве это все, что мне нужно? Разве мне не нужно настраивать что-то, что будет получать электронную почту, исходящую из маршрута MX?
PS: похоже, что на моем сервере работает postfix (после выполнения ps aux), это мой MDA? Это то, что мне нужно настроить, чтобы добавить к нему магию procmail?
Если Postfix настроен правильно, он будет знать, как запустить Procmail из коробки. Просто создайте простой .procmailrc
файл и отправьте себе сообщение. Подробное руководство, например в http://www.iki.fi/era/mail/procmail-debug.html но обязательно прочтите до конца, прежде чем уделить время этому ответу; последний абзац предлагает вам этого не делать.
Для этого вам не обязательно нужен Procmail; Я считаю, что вы можете настроить Postfix для прямой записи в вашу программу Go. Но если ваша программа не является чрезвычайно устойчивой к сбоям, Procmail предлагает каркас безопасности, который полезен в качестве подстраховки, по крайней мере, во время разработки.
Чтобы иметь копию каждого почтового сообщения для учетной записи пользователя you@example.com
быть направленным как стандартный ввод в goprogram
, владелец аккаунта /home/you/.procmailrc
только нужно
# If goprogram is in a nonstandard directory,
# add it to PATH
PATH=$HOME/go/bin:$PATH
:0c
| goprogram
Очевидно, убедитесь, что у вас есть разрешения на выполнение goprogram
и что твой PATH
включает каталог, в котором он установлен. (Очевидно, вы могли бы /path/to/goprogram
и оставить PATH
в одиночку, но если что-то становится нетривиальным, вы не должны засорять .procmailrc
с жестко запрограммированными путями к каждому двоичному файлу. Как и в оболочке, Procmail по умолчанию PATH
перечисляет ряд стандартных общесистемных расположений, например /bin:/usr/bin:/usr/local/bin
и т.д.)
В c
флаг заставляет Procmail рассматривать это как дополнительное место назначения, поэтому каждое сообщение также будет записано в почтовый ящик по умолчанию /var/mail/you
(или, может быть, Maildir
в домашнем каталоге пользователя в наши дни). Как только вы будете уверены, что ваш goprogram
не теряет почту (тест на заполнение диска, нехватку памяти и т. д.), вы можете вынуть c
и, возможно, в конечном итоге запустить его прямо из Postfix master.cf
и избавьтесь от Procmail и учетной записи пользователя Unix you
в пользу виртуального пользователя.
Технически Postfix - это ваш MTA и MSA; он знает, как использовать Procmail (или Maildrop, или множество других альтернатив) в качестве MDA. Чтобы иметь запись MX, вам необходим MTA на хосте, на который указывает MX. Правильно настроенному Postfix просто нужно указать, для каких доменных имен он должен принимать входящий трафик (в основном myorigin
и relay_domains
, но в противном случае должен быть готов служить основным MX
Если вы не знакомы с большей частью этой территории, вам, вероятно, следует вообще избегать использования собственного почтового сервера. Например. Amazon SES позволяет легко запускать собственный сценарий для каждого входящего сообщения, не беспокоясь о довольно значительной административной нагрузке и длительной кривой обучения стабильной и безопасной почтовой службе.