Я пытаюсь получать отчеты по электронной почте от наших экземпляров AWS EC2. Мы используем Exchange Online (часть Microsoft Online Services). Я настроил учетную запись пользователя специально для SMTP-ретрансляции и настроил Postfix для удовлетворения всех требований для ретрансляции сообщений через этот сервер. Однако SMTP-сервер Exchange Online будет отклонять сообщения, если только адрес отправителя не совпадает с адресом аутентификации (сообщение об ошибке 550 5.7.1 Client does not have permissions to send as this sender
).
Благодаря тщательной настройке я могу настроить свои службы для отправки в качестве этого пользователя. Но я не большой поклонник осторожности - я бы предпочел постфикс исправить проблему. Есть ли способ сделать это?
источник
sender_canonical_maps
postfix не может сохранить отклоненную почту в локальную папку и вместо этого пытается бесконечно отправлять ее через ретрансляторpostconf -e sender_canonical_classes=envelope_sender,header_sender
postconf -e sender_canonical_maps=regexp:/etc/postfix/sender_canonical_maps
postconf -e smtp_header_checks=regexp:/etc/postfix/header_check
(Примечание. Адреса FROM и TO совпадают для замены любой из общих и канонических таблиц.)
Использование канонической таблицы при получении почты сервером уже объяснено, другие ответы.
Вы можете переписать адреса FROM при отправке почты с сервера с помощью
smtp_generic_maps
.Согласно постфиксной документации :
Затем сделайте:
Ссылки:
источник
hash:
чтобыregexp:
в main.cf и использования линий , как/foo.*@localdomain.local/ account@example.com
в общей карте. Это объясняется на странице руководстваОбновление: по совету ИТ-друга я использую postfix на всех своих серверах, а не делаю один облачный почтовый сервер. Вот мое решение до сих пор:
/etc/postfix/main.cf
/etc/postfix/sasl_passwd
/etc/postfix/generic
/etc/aliases
/etc/passwd
Вещи, которыми я доволен:
alias
указывает, кто ее получает.relayer@hosteddomain.com
, поэтому она поступает через SMTP-сервер MS Online.Вещи, которые меня не устраивают:
passwd
Имя трюк не всегда работает, и это может быть трудно понять, какой сервер почтовый откуда.warning: smtp.mail.microsoftonline.com[65.55.171.153] offered null AUTH mechanism list
(SMTP-сервер отправляет пустойAUTH
список доSTARTTLS
, ноAUTH LOGIN
после).certificate verification failed for smtp.mail.microsoftonline.com: num=20:unable to get local issuer certificate
(Есть несколько параметров конфигурации вокруг сертификатов, но я не уверен, что доставка почты прерывается при обновлении сертификата)certificate verification failed for smtp.mail.microsoftonline.com: num=27:certificate not trusted
(Так же, как № 2)Спасибо сообществу serverfault за то, что поделились сильным мнением о почтовых серверах.
источник
Вы можете использовать smtpd_sender_login_maps для указания списка карт: адрес отправителя - пользователь.
Пример:
/ И т.д. / постфикс / Логин-карта:
Он работает для отправки, он должен работать для ретрансляции таким же образом.
источник
echo "This is a test" | /usr/sbin/sendmail test@example.com
виду , все еще ставит в очередь (и, в конечном итоге, пересылает) почту, как пришедшуюuser@domU-DE-AD-BE-EF-00-01.compute-1.internal
Я использую каноническое сопоставление, чтобы переписать адрес отправителя, например переписать root @ app01 на no-reply@example.com.
источник