如何设置 exim 以使用 ISP 的 SMTP 服务器(在非 Debian 系统上)?

如何设置 exim 以使用 ISP 的 SMTP 服务器(在非 Debian 系统上)?

我想要使用进出口银行通过我的 ISP 的 SMTP 服务器发送电子邮件。但是,那拱门维基相当令人困惑(exim 在 Debian 系统上要简单得多)。我按照中的说明进行操作最后一节,将 SMTP 地址从 修改mail.internode.on.net为我的 SMTP 服务器,并修改为。当我通过 ISP 连接到互联网时,此方法有效。*@* [email protected] Ffr*@* $1@my_emaildomain.com Ffr

但是,要在我的工作网络上使用它,我需要进行身份验证。我尝试按照 Gmail 列出的说明进行操作,同时更改网址,但失败了

authenticator iinet_route: cannot find authenticator driver "manualroute"

如何设置exim身份验证? (FWIW我和互联网.)

编辑

我意识到我把类似“Gmail”的设置放在了错误的部分。我移动了它们,不再收到错误消息。但是,exim现在却默默失败了。我没有收到错误消息,但没有邮件被发送。

以下是我对出厂默认设置所做的更改:

--- exim.conf.factory_default   2015-08-03 02:14:31.000000000 +1000
+++ exim.conf   2015-11-10 08:09:54.196287461 +1100
@@ -402,7 +402,7 @@

   # Deny unless the sender address can be verified.

-  require verify        = sender
+  #require verify        = sender

   # Accept if the message comes from one of the hosts for which we are an
   # outgoing relay. It is assumed that such hosts are most likely to be MUAs,
@@ -552,14 +552,19 @@
 # If the DNS lookup fails, no further routers are tried because of the no_more
 # setting, and consequently the address is unrouteable.

-dnslookup:
-  driver = dnslookup
-  domains = ! +local_domains
-  transport = remote_smtp
-  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
+#dnslookup:
+#  driver = dnslookup
+#  domains = ! +local_domains
+#  transport = remote_smtp
+#  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
 # if ipv6-enabled then instead use:
 # ignore_target_hosts = <; 0.0.0.0 ; 127.0.0.0/8 ; ::1
-  no_more
+#  no_more
+
+iinet_route:
+  driver = manualroute
+  transport = iinet_relay
+  route_list = * mail.iinet.net.au


 # This alternative router can be used when you want to send all mail to a
@@ -735,6 +746,12 @@
 address_reply:
   driver = autoreply

+iinet_relay:
+  driver = smtp
+  port = 587
+  hosts_require_auth = <; $host_address
+  hosts_require_tls = <; $host_address
+


 ######################################################################
@@ -769,6 +786,7 @@
 # There are no rewriting specifications in this default configuration file.

 begin rewrite
+*@* [email protected] Ffr



@@ -821,6 +839,12 @@
 #  server_advertise_condition = ${if def:tls_in_cipher }


+iinet_login:
+  driver = plaintext
+  public_name = LOGIN
+  hide client_send = : [email protected] : PASSWORD_HERE
+
+
 ######################################################################
 #                   CONFIGURATION FOR local_scan()                   #
 ######################################################################

这里是我的完整配置文件。

编辑2

我还尝试将端口更改为 465,这也失败了。 (FWIW 587 在 msmtp 中工作正常。)

编辑3

以下是有关失败电子邮件的信息,使用exim -Mvl.最初尝试发送使用echo body | /usr/bin/mail -s subject -r [email protected] [email protected]

2015-11-10 11:53:39 Received from [email protected] U=sparhawk P=local S=428 id=20151110005339.ag4kfrHaJ%[email protected]
2015-11-10 11:53:41 [email protected] R=iinet_route T=iinet_relay defer (-42): authentication required but authentication attempt(s) failed

编辑4

我再次运行 mail 命令(按照编辑 3),并得到了略有不同的错误。我还链接到了完整的输出exim -d+all -M messageID <ID>

$ sudo exim -Mvl 1ZwMHr-0008I4-92
2015-11-11 14:41:31 Received from [email protected] U=lee P=local S=426 id=20151111034131.VRuQn__aN%[email protected]
2015-11-11 14:41:31 [email protected] R=iinet_route T=iinet_relay defer (-53): retry time not reached for any host

完整的调试输出是这里

答案1

根据您收到的错误,您已将 wiki 中 gmail 示例中的节放在错误的部分中。 exim 配置由不同的部分组成,按顺序:

  • 主要的
    包含全局定义和设置
  • 访问控制列表
  • 路由器
    如何处理地址;使用第一个命中,因此顺序很重要
  • 运输
    定义处理消息的方法,这些是从上面的路由器引用的;顺序并不重要
  • 重试
    重试投递的频率
  • 改写
    更改地址,例如将内部地址映射到全局可用地址
  • 验证器
    定义服务器和客户端的身份验证方式

该错误消息authenticator iinet_route: cannot find authenticator driver "manualroute"清楚地表明您已将路由器节放入验证器部分。

将每个节放在相关部分中(即,路由器定义在该行之后begin routers和该行之前begin transports,考虑到顺序;等等),错误就会消失。

相关内容