Centos 上的 Exim - 配置 gmail smtp

Centos 上的 Exim - 配置 gmail smtp

我想设置 Exim 通过我的 gmail(实际上是我的域名 google apps)发送邮件。

我添加了路由器、传输器和身份验证器。具体来说:

gmail_route:
  driver = manualroute
  transport = gmail_relay
  route_list = * smtp.gmail.com

gmail_relay:
  driver = smtp
  port = 587
  hosts_require_auth = $host_address
  hosts_require_tls = $host_address

gmail_login:
  driver = plaintext
  public_name = LOGIN
  hide client_send = :[email protected]:mypassword

我可以在 Debian 上为 Exim 设置它,但我无法在 Centos 上做到这一点。

当我在监控日志的同时尝试发送时,系统提示“未找到 IP 地址...”,然后提示“远程邮件服务器出现 SMTP 错误...”。系统还提示“需要身份验证”。

以下是更多细节:假装我正在发送给[电子邮件保护]

[email protected] R=gmail_route T=gmail_relay: SMTP error from remote mail server after MAIL FROM:<[email protected]> SIZE=1492: 

host gmail-smtp-msa.l.google.com [2a00:1450:4001:c02::6d]: 

530-5.5.1 Authentication Required. Learn more at\n530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 k41sm12066343een.19 - gsmtp

我可以尝试什么来解决这个问题?我计划主要使用它来向自己发送警报电子邮件(fail2ban、logwatch 等)。默认的 Exim 设置似乎有效,但我更喜欢使用我的 gapps 电子邮件,例如[电子邮件保护]- 首先,在我训练我的电子邮件帐户将电子邮件放入收件箱之前,这些电子邮件就被归为垃圾邮件……

谢谢,

答案1

我使用了以下配置

路由器

send_via_gmail:
   driver = manualroute
   domains = ! +local_domains
   transport = gmail_smtp
   route_list = * smtp.gmail.com

运输

gmail_smtp:
   driver = smtp
   port = 587
   hosts_require_auth = $host_address
   hosts_require_tls = $host_address

验证者

gmail_login:
   driver = plaintext
   public_name = LOGIN
   client_send = : [email protected] : 7654321

一些简单的测试

# swaks -s 127.0.0.1 --to [email protected] --from [email protected]
=== Trying 127.0.0.1:25...
=== Connected to 127.0.0.1.
<-  220 mail.example.net, [127.0.0.1]
 -> EHLO mail.example.net
<-  250-mail.example.net Hello localhost [127.0.0.1]
<-  250-SIZE 52428800
<-  250-PIPELINING
<-  250-STARTTLS
<-  250 HELP
 -> MAIL FROM:<[email protected]>
<-  250 OK
 -> RCPT TO:<[email protected]>
<-  250 Accepted
 -> DATA
<-  354 Enter message, ending with "." on a line by itself
 -> Date: Wed, 05 Mar 2014 10:22:55 -0500
 -> To: [email protected]
 -> From: [email protected]
 -> Subject: test Wed, 05 Mar 2014 10:22:55 -0500
 -> X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/
 ->
 -> This is a test mailing
 ->
 -> .
<-  250 OK id=1WLDep-0004ED-Kb
 -> QUIT
<-  221 mail.example.net closing connection
=== Connection closed with remote host.

检查邮件日志文件

# cat /var/log/exim/main.log | grep 1WLDep-0004ED-Kb
2014-03-05 10:22:55 1WLDep-0004ED-Kb <= [email protected] H=localhost (mail.example.net) [127.0.0.1] P=esmtp S=479
2014-03-05 10:22:55 1WLDep-0004ED-Kb gmail-smtp-msa.l.google.com [2a00:1450:4001:c02::6d] Network is unreachable
2014-03-05 10:23:00 1WLDep-0004ED-Kb => [email protected] R=send_via_gmail T=gmail_smtp H=gmail-smtp-msa.l.google.com [173.194.70.108] X=UNKNOWN:ECDHE-RSA-AES128-GCM-SHA256:128
2014-03-05 10:23:00 1WLDep-0004ED-Kb Completed

您可以在调试模式下运行 exim

# echo -e "helo localhost\nmail from:<[email protected]>\nrcpt to:<[email protected]>\nDATA\nHello world\n.\nquit" | exim -bhc 127.0.0.1 -d+all

之后你会得到很多数据。将输出添加到问题中

答案2

你尝试过这个吗?

使用 GMail 作为智能主机:

注意:必须将以下内容放在配置文件的适当部分,例如,在 begin authenticators 之后。

在 dnslookup 路由器之前或代替 dnslookup 路由器添加路由器:

gmail_route:驱动程序 = manualroute 传输 = gmail_relay route_list = * smtp.gmail.com

添加传输:

gmail_relay:驱动程序 = smtp 端口 = 587 hosts_require_auth = $host_address hosts_require_tls = $host_address

添加身份验证器(替换[电子邮件保护]并将 mypassword 替换为您自己的帐户详细信息):

gmail_login:驱动程序 = 纯文本 public_name = LOGIN 隐藏客户端发送 = :[电子邮件保护]: 我的密码

$host_address 用于 hosts_require_auth 和 hosts_require_tls,而不是 smtp.gmail.com,以避免偶尔出现 530 5.5.1 AuthenticationRequired 错误。这些错误是由 smtp.gmail.com 的 DNS 查询中 IP 地址的变化引起的。$host_address 将扩展为由 gmail_route 路由器解析的特定 IP 地址。为了增加安全性,请使用每个应用程序的密码。这也适用于 Google Apps 帐户。

来源:https://wiki.archlinux.org/index.php/Exim_with_Remote_SMTP_server

答案3

您需要将hosts_require_authhosts_require_tls选项更改为以下内容:

  hosts_require_auth = <; $host_address
  hosts_require_tls = <; $host_address

使用 IPv6 发送时会出现问题。使用 IPv6 发送时,$host_address将是一个 IPv6 地址,因此将包含冒号 ( :)。冒号通常用作 Exim 中的列表分隔符,因此地址匹配失败,Exim 不会对自身进行身份验证。

在列表前添加前缀会将<;列表分隔符更改为分号,从而避免出现 IPv6 地址问题。

相关内容