通过 Google Apps 别名发送 Postfix 外发邮件

通过 Google Apps 别名发送 Postfix 外发邮件

我有一个域名 example.com,设置如下

  • 服务器托管一个网站和其他一些东西
  • Google Apps 负责处理我的电子邮件,并配置为发送和接收电子邮件

每当服务器需要向我发送电子邮件时,它都会使用 Postfix 通过 Google 的 SMTP 服务器发送电子邮件。

这完全没问题,但服务器以 的身份发送电子邮件[email protected]。我在 Google Apps 中设置了一个别名,以允许[email protected]以 的身份发送和接收邮件[email protected]。我希望 postfix 以 的身份发送电子邮件,[email protected]同时以 的身份登录 Google 的 SMTP 服务器[email protected]。简单的解决方案是为我的服务器开设另一个应用程序帐户,但对于一个小的业余项目来说,每月又要花 5 美元。

答案1

但它可以从盒子里取出即可使用(除了一个小例外,见下文)。[电子邮件保护]这是主电子邮件帐户的别名[电子邮件保护]

# echo "Hello world" | swaks -4 --server smtp.gmail.com:587 --from [email protected] \
--to [email protected] -tls --auth PLAIN --auth-user [email protected] \
--auth-password 1234567 --h-Subject TEST --h-From: '"Do not reply" <[email protected]>' --body -
=== Trying smtp.gmail.com:587...
=== Connected to smtp.gmail.com.
<-  220 smtp.gmail.com ESMTP un6sm65521lbb.18 - gsmtp
 -> EHLO svn.example.net
<-  250-smtp.gmail.com at your service, [77.122.73.151]
<-  250-SIZE 35882577
<-  250-8BITMIME
<-  250-STARTTLS
<-  250-ENHANCEDSTATUSCODES
<-  250-PIPELINING
<-  250-CHUNKING
<-  250 SMTPUTF8
 -> STARTTLS
<-  220 2.0.0 Ready to start TLS
=== TLS started with cipher TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128
=== TLS no local certificate set
=== TLS peer DN="/C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com"
 ~> EHLO svn.example.net
<~  250-smtp.gmail.com at your service, [77.122.73.151]
<~  250-SIZE 35882577
<~  250-8BITMIME
<~  250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
<~  250-ENHANCEDSTATUSCODES
<~  250-PIPELINING
<~  250-CHUNKING
<~  250 SMTPUTF8
 ~> AUTH PLAIN VhAEBMZXHN7cyxhAGFG0ub9JnLnZaGhfsuaGhhQhhLTEiNTU8Ng==
<~  235 2.7.0 Accepted
 ~> MAIL FROM:<[email protected]>
<~  250 2.1.0 OK un6sm65521lbb.18 - gsmtp
 ~> RCPT TO:<[email protected]>
<~  250 2.1.5 OK un6sm65521lbb.18 - gsmtp
 ~> DATA
<~  354  Go ahead un6sm65521lbb.18 - gsmtp
 ~> Date: Wed, 09 Mar 2016 21:15:09 +0000
 ~> To: [email protected]
 ~> From: "Do not reply" <[email protected]>
 ~> Subject: TEST
 ~> X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/
 ~>
 ~> Hello world
 ~>
 ~>
 ~> .
<~  250 2.0.0 OK 1457558110 un6sm65521lbb.18 - gsmtp
 ~> QUIT
<~  221 2.0.0 closing connection un6sm65521lbb.18 - gsmtp
=== Connection closed with remote host.

在此处输入图片描述

例外

在标题中你仍然可以看到原始发件人用户(发件人:Alex Domoradov)

Return-Path: <[email protected]>
Received: from svn.example.net ([77.122.73.151])
        by smtp.gmail.com with ESMTPSA id un6sm65521lbb.18.2016.03.09.13.15.10
        for <[email protected]>
        (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Wed, 09 Mar 2016 13:15:10 -0800 (PST)
Message-ID: <[email protected]>
Sender: Alex Domoradov <[email protected]>
Date: Wed, 09 Mar 2016 21:15:09 +0000
To: [email protected]
From: "Do not reply" <[email protected]>
Subject: TEST
X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/

Hello world

PS 您必须在帐户设置页面添加别名

在此处输入图片描述

答案2

因此,事实证明我需要做两件事才能使其正常工作。

首先,仅仅在 Google Apps 管理面板中为电子邮件地址添加别名是不够的,根据 Alex 的回答,还需要将附加地址添加到设置页面中的“以...身份发送邮件”面板中。如果您不这样做,Gmail 会将旧的发件人地址移动到额外的标题中,并使用您有权使用的地址发送。

其次,必须将 Postfix 配置为使用smtp_generic_maps。这将根据 中指定的文件自动将内部地址映射到外部地址。/etc/postfix/main.cf如果您希望服务器接收邮件,您还应该使用canonical_maps

我使用的配置旨在强制 postfix 发送所有用户的所有电子邮件,如下所示[email protected]

/etc/postfix/main.cf:

smtp_generic_maps = hash:/etc/postfix/generic

在/etc/postfix/通用:

[email protected]                [email protected]
[email protected]                  [email protected]
@example.com                    [email protected]
@server-hostname                [email protected]
@server-hostname.example.com    [email protected]

文档位于 http://www.postfix.org/ADDRESS_REWRITING_README.html#generic

相关内容