如何使用 Postfix 通过 Google 帐户转发邮件

如何使用 Postfix 通过 Google 帐户转发邮件

我希望非本地电子邮件通过我的个人 Google 帐户转发,并将本地电子邮件发送给本地用户。我的配置是:/etc/postfix/transport

*            smtp:[smtp.gmail.com]:587

和 /etc/postfix/main.cf

[root@media postfix]# cat main.cf
# This file contains only the parameters changed from a default install
# see /etc/postfix/main.cf.dist for a commented, fuller version of this file.
transport_maps = hash:/etc/postfix/transport
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_mechanism_filter = plain, login
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes

在 /etc/postfix/sasl_passwd 中:

[smtp.google.com]:587    [email protected]:mypass

在我跑完之后:

# postmap transport && postmap sasl_passwd
systemctl restart postfix.service

所以现在我的服务器尝试连接到 gmail MX(没有成功,但没有在本地发送电子邮件

来自 journalctl 的日志:

    Jul 06 18:38:01 media postfix/pickup[31431]: 30714960F8: uid=0 from=<root>
    Jul 06 18:38:01 media postfix/cleanup[31641]: 30714960F8: message- id=<[email protected]>
    Jul 06 18:38:01 media postfix/qmgr[31432]: 30714960F8: from=<[email protected]>, size=436, nrcpt=1 (queue active)
    Jul 06 18:38:01 media postfix/smtp[31643]: connect to smtp.gmail.com[2a00:1450:4008:c01::6c]:587: Network is unreachable
   Jul 06 18:38:01 media postfix/smtp[31643]: 30714960F8: to=<[email protected]>, relay=smtp.gmail.com[173.194.69.108]:587, delay=0.7, delays=0.03/0.04/0.55/0.07, ...M command))
    Jul 06 18:38:02 media postfix/cleanup[31641]: 0B85D960F9: message-id=<[email protected]>
    Jul 06 18:38:02 media postfix/qmgr[31432]: 0B85D960F9: from=<>, size=2555, nrcpt=1 (queue active)
    Jul 06 18:38:02 media postfix/bounce[31646]: 30714960F8: sender non-delivery notification: 0B85D960F9
    Jul 06 18:38:02 media postfix/qmgr[31432]: 30714960F8: removed
    Jul 06 18:38:02 media postfix/smtp[31643]: connect to smtp.gmail.com[2a00:1450:4008:c01::6d]:587: Network is unreachable
    Jul 06 18:38:02 media postfix/smtp[31643]: 0B85D960F9: to=<[email protected]>, relay=smtp.gmail.com[173.194.69.109]:587, delay=0.59, delays=0.02/0.01/0.51/0.06,...M command))
    Jul 06 18:38:02 media postfix/qmgr[31432]: 0B85D960F9: removed
    Jul 06 18:38:40 media auth[31778]: pam_tcb(dovecot:auth): Authentication passed for media from (uid=0)
    Jul 06 18:38:40 media dovecot[1442]: pop3-login: Login: user=<media>, method=PLAIN, rip=192.168.0.2, lip=192.168.0.7, mpid=31779, secured, session=<VZaXcdrgpADAqAAC>
    Jul 06 18:38:40 media dovecot[1442]: pop3(media): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
    Jul 06 18:38:58 media postfix/pickup[31431]: CD15D960F8: uid=0 from=<root>
    Jul 06 18:38:58 media postfix/cleanup[31641]: CD15D960F8: message-id=<[email protected]>
    Jul 06 18:38:58 media postfix/qmgr[31432]: CD15D960F8: from=<[email protected]>, size=430, nrcpt=1 (queue active)
    Jul 06 18:38:59 media postfix/smtp[31643]: CD15D960F8: to=<[email protected]>, relay=smtp.gmail.com[173.194.69.108]:587, delay=0.63, delays=0.02/0/0.54/0.06, dsn=5.5....M command))
    Jul 06 18:38:59 media postfix/cleanup[31641]: BAB0E960F9: message-id=<[email protected]>
    Jul 06 18:38:59 media postfix/qmgr[31432]: BAB0E960F9: from=<>, size=2541, nrcpt=1 (queue active)
    Jul 06 18:38:59 media postfix/bounce[31646]: CD15D960F8: sender non-delivery notification: BAB0E960F9
    Jul 06 18:38:59 media postfix/qmgr[31432]: CD15D960F8: removed
Jul 06 18:39:00 media postfix/smtp[31643]: BAB0E960F9: to=<[email protected]>, relay=smtp.gmail.com[173.194.69.109]:587, delay=0.66, delays=0.02/0.01/0.56/0.07,...M command))
    Jul 06 18:39:00 media postfix/qmgr[31432]: BAB0E960F9: removed

有什么帮助可以使它正常工作吗?

答案1

您必须TLS在 Postfix 的 SMTP 客户端中启用它,因为 Google 需要它。他们在消息中指出了这一点Must issue a STARTTLS command

在 中/etc/postfix/main.cf,你想要这样的东西:

smtp_tls_policy_maps = hash:/etc/postfix/tls_policy

然后在/etc/postfix/tls_policy

[smtp.gmail.com]:587 encrypt

中的左侧tls_policy必须与中的中继主机条目完全相同main.cf

请记住根据需要创建或更改后继续postmap运行。/etc/postfix/tls_policy

您可以在 Postfix 的 TLS 文档中找到更多详细信息。

参考这些链接

http://blog.bigdinosaur.org/postfix-gmail-and-you/

http://www.postfix.org/TLS_README.html#client_tls

答案2

这是我为此采用的程序:

sudo apt-get install postfix.

如果它询问您安装了哪种邮件服务器,请选择不配置(第一个选项)

sudo nano /etc/postfix/main.cf

并将其粘贴到

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
# listen on localhost only
inet_interfaces = 127.0.0.1

smtpd_banner = $myhostname ESMTP $mail_name

biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

#Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

保存文件,现在我们用用户名和密码创建文件

sudo nano /etc/postfix/sasl_passwd

并粘贴以下内容进行必要的替换

[smtp.gmail.com]:587    [email protected]:password

保存,然后在命令提示符下

sudo postmap /etc/postfix/sasl_passwd

然后

chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

最后,

sudo service postfix restart

请注意,一旦您成功测试了电子邮件系统,您就可以删除/混淆 sasl_passwd 中的密码。

使用你的应用程序进行测试。如果你遇到问题,请检查 /var/log/mail.log。你可以使用 apt-get install mail-utils 来安装邮件程序。然后你可以使用

echo “this is a test” | mailx -s “This is the subject” [email protected]

最后

跑步

newaliases

创建一个 /etc/aliases.db 文件。如果不这样做,它会将大量错误记录到 /var/log/mail.err 中。如果收到 SASL 错误(postfix),请检查主机名是否在 /etc/hosts 和 /etc/hostname 中。如果 postfix 抱怨无法中继给定的主机/IP 地址(postfix),请将其添加到 /etc/postfix/main.cf 中

mynetworks = 10.0.0.0/8

这将允许任何拥有 10.0.0.0 地址的人进行连接,显然你应该尽可能地限制这一点,要么通过限制网络,要么使用任何可用的防火墙或安全策略

答案3

首先,请务必检查 Google 的身份验证方法:

https://www.google.com/settings/security/lesssecureapps

如果您的帐户无法使用该页面,则域管理员会为所有用户禁用此设置(默认)。

当您在 Google 管理员的中继 SMTP 中将您的 IP/范围列入白名单时,您可以使用此设置发送电子邮件

relayhost = [smtp-relay.gmail.com]:587
smtp_use_tls = yes
smtp_tls_loglevel=1
smtp_tls_security_level=encrypt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = login, plain
smtp_tls_CApath = /etc/ssl/certs
smtp_sasl_tls_security_options = noanonymous

然而,当Allow less secure apps: OFF我总是收到这些信息时:

(SASL authentication failed; server smtp-relay.gmail.com[173.194.204.28] said: 534-5.7.14
... Please log in via your web browser and?534-5.7.14 then try again.?534-5.7.14
Learn more at?534 5.7.14  https://support.google.com/mail/answer/78754 g133sm1077601qkb.1 - gsmtp)

但消息仍然被传递(这有点奇怪),尽管消息需要更长的时间才能到达收件人。

相关内容