Postfix: Mailgun не запускается в том же домене

Конфигурации

Мы сделали обычные записи relay / sasl в main.cf (postfix):

# Amavisd + SpamAssassin + ClamAV
#
content_filter = smtp-amavis:[127.0.0.1]:10024

# Concurrency per recipient limit.
smtp-amavis_destination_recipient_limit = 1

relayhost = [smtp.mailgun.org]:587

smtp_tls_security_level = encrypt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:[email protected]:password
smtp_sasl_security_options = noanonymous

На самом деле это работает отлично, и доставка почты также должным образом регистрируется в Mailgun.

Проблема
Если мы отправляем электронное письмо в пределах нашего домена, оно не запускает Mailgun. Значит: если JohnDoe @ ourXYZDomain .com отправляет электронное письмо на JaneDoe @ ourXYZDomain, оно доставляется через postfix. Если JohnDoe @ ourXYZDomain .com отправляет электронное письмо на адрес JohnDoe @ someOtherDomain .com, оно доставляется и регистрируется через Mailgun smtp.

Анализ
Письма в одном домене отправляются без ошибок. При просмотре заголовка полученного письма видно, что postfix даже не потрудился использовать Mailgun. См. localhost [127.0.0.1] в строке 6:

Subject:test - 00:11
Contact photo
From    [email protected]    Date    Mon 00:11
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: from mail.ourXYZDomain.com (localhost [127.0.0.1])
    by mail.ourXYZDomain.com (Postfix) with ESMTP id 49KwDw97hggXdtN
    for <[email protected]>; Sun, 10 May 2020 20:11:12 +0000 (UTC)
Authentication-Results: mail.ourXYZDomain.com (amavisd-new); dkim=pass
    reason="pass (just generated, assumed good)"
    header.d=ourXYZDomain.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=
    ourXYZDomain.com; h=user-agent:message-id:subject:subject
    :to:from:from:date:date:content-transfer-encoding:content-type
    :content-type:mime-version; s=dkim; t=1589141471; x=1591733472;
    bh=WonWKNs0MVBQ4Md9bT3TQ0-----=; b=1lp9qX-----YE
    HQwrRVwjLjcPcP/jkjhgjghgfWisfODNZ5xHnQto5Xa
    D6/Wj8fAEpwiu8uG5Ujhugz778gjNZ8UhFXtJf2aK
    1B8iZembDuiIsjg6fKj6snRjA=
X-Virus-Scanned: amavisd-new at mail.ourXYZDomain.com
Received: from mail.ourXYZDomain.com ([127.0.0.1])
    by mail.ourXYZDomain.com (mail.ourXYZDomain.com [127.0.0.1]) (amavisd-new, port 10026)
    with ESMTP id xzds0121548c for <[email protected]>;
    Sun, 10 May 2020 20:11:11 +0000 (UTC)
Received: from _ (localhost [127.0.0.1])
    by mail.ourXYZDomain.com (Postfix) with ESMTPSA id 49KwDv54101252XdtL
    for <[email protected]>; Sun, 10 May 2020 20:11:11 +0000 (UTC)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII;
    format=flowed
Content-Transfer-Encoding: 7bit
Date: Mon, 11 May 2020 00:11:11 +0400
From: [email protected]
To: [email protected]
Subject: test - 00:11
Message-ID: <[email protected]>
X-Sender: [email protected]

У нас нет объяснения такому поведению. Может, мы что-то упустили?

Спасибо за подсказку


person DingDong    schedule 16.05.2020    source источник


Ответы (2)


Когда вы отправляете почту из одного виртуального почтового ящика $ mydomain в другой виртуальный почтовый ящик $ mydomain, постфикс не будет ретранслировать его в Mailgun и переместить его локально.

Вам нужно создать несколько экземпляров Postfix, где один экземпляр будет ретранслировать все письма в Mailgun без локальной доставки, а второй экземпляр будет прослушивать 25-порт для поступающей почты и доставлять его в виртуальные ящики.

Объяснение этого решения Вы можете найти здесь: http://www.postfix.org/MULTI_INSTANCE_README.html

person Sergiy Zaschipas    schedule 27.05.2020

Mailgun - одна из многих служб ретрансляции почты, которые в основном используются для ретрансляции почты во внешние сети. Ретранслятор почты - это процесс передачи электронной почты с одного сервера на другой для доставки. Например, если вы работаете в компании A и отправляете электронное письмо кому-то в компании B, вы подключаетесь к SMTP-серверу вашей компании, который затем ретранслирует вашу электронную почту на сервер, принадлежащий компании B.

Для отправки почты в той же сети вам не нужен хост-ретранслятор. Письма здесь доставляются локально с помощью постфикса на учетную запись другого пользователя. Локальная почта зависит от настроек myorigin mydestination mynetworks в main.cf. Следующая конфигурация почтового хоста является примером, который проясняет вам ситуацию.

/etc/postfix/main.cf:
       myorigin = $mydomain
       mydestination = $myhostname localhost.$mydomain localhost $mydomain
       mynetworks = 127.0.0.0/8 10.0.0.0/24

       relayhost = [smtp.mailgun.org]:587

       # Optional: forward all non-local mail to firewall
       #relayhost = [firewall.example.com]

Вы можете найти более подробную информацию по следующей ссылке

Примеры стандартной конфигурации Postfix

person Puneet Chandhok    schedule 24.05.2020
comment
правда, но еще раз: нам нужно использовать relayhost даже для обменов в одном домене. - person DingDong; 27.05.2020