dovecot считает, что псевдоним канала является пользователем, отвергает электронную почту
У меня есть экземпляр AWS EC2 под управлением Amazon Linux с Postfix для обслуживания почты. У меня есть только локальные пользователи - нет виртуальных пользователей - и мои пользователи и псевдонимы обслуживаются через PostgreSQL. мой aliases
Таблица в psql выглядит так:
alias | email
-------+---------------------------------------------------------------------
doc | | /usr/bin/php /var/www/vhosts/mydomain.com/httpsdocs/app/pipe.php
Когда я отправляю электронное письмо на doc@mydomain.com и отслеживаю почтовый журнал, я вижу это:
May 18 21:22:35 ip-172-30-0-33 dovecot: auth: userdb(?): Username character disallowed by auth_username_chars: 0x7c (username: |/usr/bin/php /var/www/vhosts/mydomain.com/httpsdocs/app/pipe.php@mydomain.com)
May 18 21:22:35 ip-172-30-0-33 dovecot: auth: Debug: userdb out: NOTFOUND#0111
May 18 21:22:35 ip-172-30-0-33 dovecot: lmtp(11981): Debug: auth input:
May 18 21:22:35 ip-172-30-0-33 postfix/lmtp[11980]: 9992660E42: to=<|/usr/bin/php /var/www/vhosts/mydomain.com/httpsdocs/app/pipe.php@mydomain.com>, relay=mail.mydomain.com[private/dovecot-lmtp], delay=0.03, delays=0/0.01/0/0.01, dsn=5.1.1, status=bounced (host mail.mydomain.com[private/dovecot-lmtp] said: 550 5.1.1 <|/usr/bin/php /var/www/vhosts/mydomain.com/httpsdocs/app/pipe.php@mydomain.com> User doesn't exist: |/usr/bin/php /var/www/vhosts/mydomain.com/httpsdocs/app/pipe.php@mydomain.com (in reply to RCPT TO command))
Кроме того, ему не нравится символ канала, и я не могу обернуть путь канала в кавычки, так как они также отклоняются.
Как можно получить Postfix для пересылки писем на doc @ в сценарий, когда псевдонимы есть в PostgreSQL?
Спасибо за любую помощь!
(PS - Я абсолютный нуб во всем этом, путаясь в настройке этого сервера. Пожалуйста, будьте осторожны...)
1 ответ
Забота о пересылке почты с помощью "разветвления" цепочек пересылки - это работа агента пересылки почты, а Dovecot - нет. Я не знаю, что Dovecot вообще поддержит "доставку" писем в каналы. Вместо этого используйте настоящий MTA, такой как Postfix или Exim.
Если вы застряли с Dovecot, возможно, вам удастся построить следующие варианты (но я настоятельно рекомендую подключить Postfix перед Dovecot, у вас, возможно, уже есть):
- Реализация Dovecot Sieve может использоваться для фильтрации и обработки входящих сообщений во время доставки. Среди множества других операций у Dovecot есть проприетарное расширение для выполнения скриптов.
- Напишите свой собственный плагин Dovecot, но документации по этому вопросу немного.
- Почтовые фильтры не помогут вам, так как они могут не подавлять сообщения (они должны обеспечивать двунаправленные входящие и исходящие фильтры, и применение обоих должно возвращать исходное сообщение).