Принудительный переход от адреса, когда postfix передает реле через smtp

Я пытаюсь получить сообщения электронной почты из наших экземпляров AW2 EC2. Мы используем Exchange Online (часть Microsoft Online Services). Я настроил учетную запись пользователя специально для ретрансляции SMTP , ve setup Postfix для удовлетворения всех требований к ретрансляции сообщений через этот сервер. Тем не менее, SMTP-сервер Exchange Online отклонит сообщения, если адрес From точно не совпадает с адресом аутентификации (сообщение об ошибке 550 5.7.1 Client does not have permissions to send as this sender).

С тщательной настройкой я могу настроить свои службы для отправки в качестве этого пользователя. Но я не большой поклонник быть осторожным - я бы предпочел, чтобы постфикс усилил проблему. Есть ли способ сделать это?

22 голоса | спросил John Whitlock 3 J0000006Europe/Moscow 2010, 21:10:29

5 ответов


30

Вот как это сделать в postfix.

Эта конфигурация изменяет адреса отправителя как с локального, так и с ретранслированного почтового трафика SMTP:

/etc/postfix/main.cf:

sender_canonical_classes = envelope_sender, header_sender
sender_canonical_maps =  regexp:/etc/postfix/sender_canonical_maps
smtp_header_checks = regexp:/etc/postfix/header_check

Перепишите адрес конверта из электронной почты, исходящей от самого сервера

/и т.д. /постфикса /sender_canonical_maps:

/.+/    [email protected]

Перепишите с адреса в ретранслированном электронном письме SMTP

/и т.д. /постфикса /header_check:

/From:.*/ REPLACE From: [email protected]

Это очень полезно, если вы, например, используете локальный ретранслятор smtp-сервера, который используется всеми вашими многофункциональными устройствами и несколькими приложениями.

Если вы используете SMTP-сервер Office 365, любая почта с другим адресом отправителя, кроме электронной почты от аутентифицированного пользователя, будет просто лишена. Вышеупомянутая конфигурация предотвращает это.

ответил Jasper 12 MarpmThu, 12 Mar 2015 18:18:45 +03002015-03-12T18:18:45+03:0006 2015, 18:18:45
12
  

Необязательная общая таблица указывает сопоставление адресов, которое   применяется, когда почта отправляется (отправляется) с сервера.

     

Это противоположно отображению канонического , которое применяется, когда почта получен сервером.

(Примечание: оба адреса FROM и TO сопоставляются для замены любой из общих и канонических таблиц.)

Использование канонической таблицы, когда почта получена сервером , уже объяснено, - это другие ответы.

Вы можете переписать FROM-адреса, когда почта отправлена ​​с сервера , используя smtp_generic_maps.

В соответствии с документацией по постфиксам :

/etc/postfix/main.cf:
    smtp_generic_maps = hash:/etc/postfix/generic

/etc/postfix/generic:
    [email protected]      [email protected]
    @localdomain.local          [email protected]

Тогда do:

sudo postmap /etc/postfix/generic
sudo /etc/init.d/postfix reload

Ссылки:

ответил Jocelyn 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 01 Sep 2013 21:21:11 +0400 2013, 21:21:11
6

Обновление. По совету ИТ-друга я запускаю постфикс на всех моих серверах, вместо того, чтобы создавать один сервер облачных почтовых сообщений. Вот мое решение:

/etc/postfix/main.cf

# output of hostname -f - mail from local users appears to come from here
myhostname = domU-01-02-03-04-05-06.compute-1.internal
# Local delivery - include all 127.0.0.1 aliases from /etc/hosts
mydestination = $myhostname, $mydomain, rest_of_entries_from_hosts
# Needed for address translation to work
myorigin = $mydomain

# Talking to MS Online
# :submission = port 587
relayhost = [smtp.mail.microsoftonline.com]:submission
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =   # Yes, leave empty
smtp_tls_security_level = encrypt
smtp_generic_maps = hash:/etc/postfix/generic

# Enable if you need debugging, but it does leak credentials to the log
#debug_peer_level = 2
#debug_peer_list = smtp.mail.microsoftonline.com

# Only listen on the local interfaces (not the public)
inet_interfaces = localhost

# I left out a bunch of CentOS defaults.  postconf -n is your friend.
# These are included
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

/etc/postfix/sasl_passwd

# Run postmap /etc/postfix/sasl_passwd after editing
# Also, chown root:root; chmod 600
smtp.mail.microsoftonline.com [email protected]:[email protected]

/etc/postfix/generic

# Run postmap /etc/postfix/generic
# I've seen local mail come from either source
# output of dnsdomainname
@compute-1.internal [email protected]
# output of hostname -f
@domU-01-02-03-04-05-06.compute-1.internal [email protected]

/etc/aliases

# Run newaliases after changing
# Lot of stuff here. Mostly, just make sure the graph points to root, such as
mailer-daemon:  postmaster
postmaster:     root

# And the important part - your email or distribution group
root:           [email protected]

/etc/passwd

# Sometimes it helps to expand the name, so email comes from 'root at aws host 5'
#  rather than just 'root'
# Was
#root:x:0:0:root:/root:/bin/bash
# Is
root:x:0:0:root on aws host 5:/root:/bin/bash

Вещи, которым я доволен:

  • Много писем отправляется root, а одна строка в alias направляет, кто ее получает.
  • Вся почта от местных пользователей переведена на [email protected], поэтому она проходит через SMTP-сервер MS Online.
  • Postfix имеет гораздо лучшую документацию, чем sendmail.

Вещи, которые меня не радуют:

  • Пользовательские изменения необходимы для каждого хоста и несколько шагов. Я написал сценарий bash, чтобы помочь.
  • Тональный тэг passwd не всегда работает, и может быть сложно определить, из какого сервера отправляется почта.
  • Каждое отправленное письмо помещает три предупреждения в журнал:
    1. warning: smtp.mail.microsoftonline.com[65.55.171.153] offered null AUTH mechanism list (SMTP-сервер отправляет null AUTH список до STARTTLS, но AUTH LOGIN после) .
    2. certificate verification failed for smtp.mail.microsoftonline.com: num=20:unable to get local issuer certificate (Есть несколько вариантов конфигурации вокруг сертификатов, но я не уверен, что доставка почты прерывается, когда сертификат обновляется)
    3. certificate verification failed for smtp.mail.microsoftonline.com: num=27:certificate not trusted (То же, что и # 2)

Благодаря сообществу serverfault для обмена мнениями на почтовых серверах.

ответил John Whitlock 17 J0000006Europe/Moscow 2010, 18:35:00
4

Вы можете использовать smtpd_sender_login_maps , чтобы указать список карт: адрес отправителя - пользователь.

Пример:

smtpd_sender_login_maps = 
    hash:/etc/postfix/login-map 

/и т.д. /постфикс /Логин-карты:

[email protected]    userlogin
[email protected]    userlogin, [email protected]

Он работает для отправки, он должен работать для ретрансляции таким же образом.

ответил silk 4 J0000006Europe/Moscow 2010, 00:17:56
0

Я использую каноническое отображение для переписывания адреса, такого как переписывание root @ app01 - [email protected]

ответил ZHANG Cheng 12 WedEurope/Moscow2012-12-12T16:23:00+04:00Europe/Moscow12bEurope/MoscowWed, 12 Dec 2012 16:23:00 +0400 2012, 16:23:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132