Я установил smtp-сервер, используя postfix с dovecot на сервере mail.example.com, работающем на порту 25. А затем я также установил другой smtp-сервер, используя Mailin (http://mailin.io) на сервере mail.example.com, но работает на порту 10025.
Цель этого mailin - просто проанализировать входящие электронные письма, полученные от postfix, и отправить проанализированные результаты как json через webhooks.
Поскольку postfix не имеет API для анализа содержимого электронной почты, поэтому я использую mailin.
На моем /etc/postfix/main.cf Я добавляю эту строку:
relay_domains = localhost:10025 ## this is the mailin smtp server running on port 10025
Вот мой почтовый журнал:
[root@mailserver ~]# tail -f /var/log/maillog
Dec 17 04:36:07 mailserver postfix/smtpd[6858]: connect from localhost[127.0.0.1]
Dec 17 04:36:07 mailserver postfix/smtpd[6858]: 6E2C21848: client=localhost[127.0.0.1]
Dec 17 04:36:07 mailserver postfix/cleanup[6868]: 6E2C21848: message-id=<20141217093607.6E2C21848@mailserver.localdomain>
Dec 17 04:36:07 mailserver postfix/qmgr[6386]: 6E2C21848: from=<arman.ortega@cebufreelancer.com>, size=506, nrcpt=1 (queue active)
Dec 17 04:36:07 mailserver postfix/smtpd[6858]: disconnect from localhost[127.0.0.1]
Dec 17 04:36:07 mailserver dovecot: lda(user1.trigger1@cebufreelancer.com): msgid=<20141217093607.6E2C21848@mailserver.localdomain>: saved mail to INBOX
Dec 17 04:36:07 mailserver postfix/pipe[6871]: 6E2C21848: to=<user1.trigger1@cebufreelancer.com>, relay=dovecot, delay=0.09, delays=0.06/0.01/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service)
Dec 17 04:36:07 mailserver postfix/qmgr[6386]: 6E2C21848: removed
Как я заметил, электронное письмо было успешно отправлено, но рассылка не работает.
Мой вопрос в том, как mailin получает / анализирует входящее письмо, так как postfix был единственным, кто получил письмо?
Может кто-нибудь объяснить, как это сделать правильно?
Обновлено [17.12.2014]: вывод команды postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailbox_command = /usr/lib/dovecot/deliver
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = localhost
mynetworks_style = host
myorigin = $myhostname
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
recipient_delimiter = +
relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 550
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = dovecot
virtual_gid_maps = static:5000
virtual_uid_maps = static:5000
Отказ от ответственности: я предполагаю, что вы только хочу разобрать электронную почту с Mailin и письмо больше не будет доставлено голубятне.
Для этого замените параметр virtual_transport, чтобы он стал
virtual_transport = smtp:[127.0.0.1]:10025
Вот и все, вместо того, чтобы доставлять его в dovecot, postfix передаст письмо в mailin через SMTP-порт 10025.
[ОБНОВИТЬ]
На основе этого почтового журнала
Dec 18 mailserver postfix/smtpd[13147]: connect from mailserver.cebufreelancer.com[9.40.80.111]
Dec 18 mailserver postfix/smtpd[13147]: 61C252F1F: client=mailserver.cebufreelancer.com[9.40.80.111]
Dec 18 mailserver postfix/cleanup[13157]: 61C252F1F: message-id=<20141219033146.61C252F1F@mailserver.localdomain>
Dec 18 mailserver postfix/qmgr[13139]: 61C252F1F: from=<ortegaaa@ph.ibm.com>, size=523, nrcpt=1 (queue active)
Dec 18 mailserver postfix/smtpd[13147]: disconnect from mailserver.cebufreelancer.com[9.40.80.111]
Dec 18 mailserver postfix/smtp[13160]: 61C252F1F: to=<user1.trigger1@cebufreelancer.com>, relay=127.0.0.1[127.0.0.1]:10025, delay=0.14, delays=0.05/0.04/0/0.04, dsn=4.1.8, status=deferred (host 127.0.0.1[127.0.0.1] said: 450 4.1.8 <user1.trigger1@cebufreelancer.com>: Recipient address rejected: Domain not found (in reply to RCPT TO command))
Postfix успешно отправил сообщение на mailin. Эта ошибка
Recipient address rejected: Domain not found
пришло из mailin (на самом деле из simplesmtp, библиотеки SMTP). Посмотреть код в github.
При получении электронной почты Mailin попытается разрешить домен получателя. Когда я пытаюсь разрешить домен cebufreelancer.com
с моей виртуальной машины результат NXDOMAIN. Вот почему mailin сообщает об ошибке.