Гибридный gmail MX + postfix для локальных учетных записей

Гибридный gmail MX + postfix для локальных учетных записей

Вот установка:

У нас есть домен mydomain.com. Все находится на нашем собственном сервере, за исключением общих почтовых аккаунтов, которые через gmail.

В настоящее время в качестве записи MX задан gmail.

На сервере также имеются различные псевдонимы электронной почты, необходимые для поддержки систем отслеживания ошибок и т. п., например:[email protected]|/путь/к/issuetracker.script

Я борюсь с настройкой, которая позволяет выполнять следующие действия как локально, так и из почтовых клиентов пользователя.

  1. guser1 - имеет учетную запись gmail и локальную учетную запись
  2. guser2 - имеет только учетную запись gmail
  3. ошибки - имеет псевдоним канала в /etc/aliases для отслеживания ошибок

Сценарии

  • отправить письмо[email protected]с локального хоста (crons и т.п.) необходимо перейти на учетную запись gmail
  • отправить письмо[email protected]от локального хоста
  • отправить письмо[email protected]необходимо передать в локальный скрипт отслеживания проблем

Итак, первым шагом было создание транспортной карты. В этом сценарии наш сервер будет установлен как MX, а письма, предназначенные guser*, будут отправляться на gmail. Поместите пользователей gmail в карту следующим образом:

[email protected] smtp:gmailsmtp:25
[email protected] smtp:gmailsmtp:25

Проблемы:

  • Игнорирует такие расширения, как[email protected]
  • Работает только если append_at_myorigin = no (если установлено значение yes, gmail отказывается подключаться с: E4C7E3E09BA3: to=, relay=none, delay=0.05, delays=0.02/0.01/0.02/0, dsn=4.4.1, status=deferred (подключение к gmail-smtp-in.l.google.com[209.85.222.57]:25: Connection denied))
  • поскольку append_at_myorigin установлен на no, все полученные письма имеют (неизвестный отправитель)

Вторым шагом было задать явные псевдонимы localhost в /etc/aliases и сделать переадресацию на весь домен на mydomain. Это также требует установки локального сервера в качестве MX:

root: root@localhost
# transport
mydomain.com smtp:gmailsmtp:25

Проблемы: * Если я создаю транспортную карту для домена, который соответствует "$myhostname", файл псевдонимов никогда не анализируется. Поэтому, когда локальный пользователь (или демон) отправляет электронное письмо типа:

mail -s "testing" root < text.txt

Postfix игнорирует запись /etc/alias и сопоставляет ее с[email protected]и пытается отправить его на сопоставление транспорта Gmail.

Третий удар:

Создайте поддомен для bugs, что-то вроде bugs.mydomain.com. Установите MX для этого домена на локальный сервер и оставьте MX для mydomain.com на сервер Gmail.

Проблемы: * Не решает проблему с локальными учетными записями. Поэтому, когда баг-трекер отвечает на письмо от[email protected], он использует локальный транспорт, и пользователь никогда не получает электронное письмо.

% postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_at_myorigin = no
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = $myhostname, localhost.$myhostname, localhost
myhostname = mydomain.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost = 
smtp_tls_cert_file = /etc/ssl/certs/kspace.pem
smtp_tls_enforce_peername = no
smtp_tls_key_file = /etc/ssl/certs/kspace.pem
smtp_tls_note_starttls_offer = yes
smtp_tls_scert_verifydepth = 5
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_recipient_restrictions = permit_mynetworks,   reject_invalid_hostname,   reject_non_fqdn_sender,   reject_non_fqdn_recipient,   reject_unknown_sender_domain,   reject_unknown_recipient_domain,   reject_unauth_destination
smtpd_tls_ask_ccert = yes
smtpd_tls_req_ccert = no
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
tls_random_source = dev:/dev/urandom
transport_maps = hash:/etc/postfix/transport

решение1

Переключитесь на виртуальный. Прочтите VIRTUAL Docs от postfix. Так у вас будет гораздо больше контроля.

main.cf:

virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_maps = hash:/etc/postfix/virtualmailboxmap
virtual_mailbox_domains = mydomain.com
virtual_transport = local:

виртуальный, перечислите всех пользователей, которые у вас есть

localuser  localuser
somealias  localuser
guser1     [email protected],guser1
bugs       [email protected]

virtualmailboxmap, список всех локальных пользователей, правая сторона не имеет значения!

 localuser   rhsunused
 guser1      rhsunused

транспорт:

 mydomain.com      local:
 gmail.mydomain.com smtp:gmailsmtp:25
 issuetracker.mydomain.com smtp:[issuetracker ip]:25

У меня было это с cyrus: transport для локальных счетов. Я знаю, что это не полный ответ на все ваши вопросы, но это может быть началом.

Связанный контент