Exim4 是 Debian 默认的 MTA (Message Transfer Agent) ,连基本系统里面都有它,用他自然是和系统兼容性最好的了。在 Debian 下配置 Exim 很方便,系统提供了一个配置脚本,可以通过回答问题的方式来进行配置。
这里我要把 Exim4 配置为可以连接到学校的 SMTP 服务器进行发信,这样就可以在 Mutt 里面使用 Exim4 来发信了。
配置脚本
Debian 里面提供了 Exim4 的配置脚本,其实在安装系统的时候就已经运行过他了,不过那个时候我选择仅在本地投递。随时可以运行 dpkg-reconfigure exim4-config 来进行重新配置。
它会向你提一些问题,关于这些问题的详细解释可以查看系统里面的 /usr/share/doc/exim4/README.Debian.html :
Split configuration into small files?
配置文件可以存放成一个单一文件,也可以分类存放,各有各的好处,因为后面我们还要手工修改配置文件,这里就选择不分割了。
General type of mail configuration
这里选择 mail sent by smarthost; recieved via SMTP or fetchmail ,就是我们要配置的类型。
System mail name
这里就让他是 localhost.localdomain 吧。乱填的话有可能导致本地投递的邮件投递失败。
IP-address to listen on for incoming SMTP connections
我只是自己使用用,所以这里就是默认的 127.0.0.1 就可以了。
Other destinations for which mail is accepted
这里也只填 localhost.localdomain 。
Machines to relay mail for
这里我留空了。
Machine handling outgoing mail for this host (smarthost)
这里就是填要用来发送邮件的 SMTP 服务器的地址。我这里填上了 zjuem.zju.edu.cn 。
Hide local mail name in outgoing mail?
这个随便了。我这里选择了是。
Visible domain name for local users
由于我上一个选项选了是,它让我填这个内容,我就胡乱填了一个 kid.org 。
Keep number of DNS-queries minimal (Dial-on-Demand)?
这里我选择了他默认选中的 No 。
这 样就算基本配置完毕,更复杂的配置任务还需要手工修改配置文件。比如,SMTP 的验证问题,为了避免垃圾邮件泛滥,现在很多 SMTP 服务器都需要经过验证才能发邮件,查看 /usr/share/doc/exim4/README.Debian.html 知道配置 Exim4 作为 SMTP 客户端的时候的用户名和密码在 /etc/exim4/passwd.client 文件里面配置,语法为:从左到由分别是服务器、用户名、密码,中间用冒号隔开。因为我只配置了一个 Smarthost 作为 SMTP 服务器,这里直接用通配符星号表示了:
*:pluskid:password
运行测试
测试 Exim4
用系统自带的 mail 命令来尝试发送一下邮件:
mail pluskid@mstczju.org
提示输入主题,然后是邮件内容。邮件内容一一行唯一的 . 标记结束。发送邮件之后,可以登陆到邮箱中,发现并没有收到邮件。可以通过查看 Exim4 的日志看到底出了什么问题:
tail /var/log/exim4/mainlog
发现 SMTP 服务器提示 550 mailbox unavailable 。
测试 SMTP 服务器
为了弄清楚到底是怎么回事,我们 telnet 到 SMTP 服务器上。以下“>”开头的表示我们的输入,其他的则表示服务器的反馈。
> telnet zjuem.zju.edu.cn 25
Trying 10.10.2.41...
Connected to zjuem.zju.edu.cn.
Escape character is '^]'.
220 smtp ready
> helo
250 eyou.net HELO, pleased to meet
> ehlo
250-eyou.net HELO, pleased to meet
250-AUTH=LOGIN PLAIN
250-AUTH LOGIN PLAIN
250-PIPELINING
250 8BITMIME
> mail from: <pluskid@zju.edu.cn>
250 OK
> rcpt to: <pluskid@mstczju.org>
550 mailbox unavailable. (邮箱不存在)
Connection closed by foreign host.
可 以看到什么情况下会出现这个错误了,错误是因为没有经过认证的步骤。下面我们再尝试一次,并加上认证的过程。认证中需要输入用户名和密码,都是经过 base64 编码的,在 Emacs 里面可以通过 M-x base64-encode-region 来对选中的区域进行 base64 编码。
> telnet zjuem.zju.edu.cn 25
Trying 10.10.2.41...
Connected to zjuem.zju.edu.cn.
Escape character is '^]'.
220 smtp ready
> helo
250 eyou.net HELO, pleased to meet
> ehlo
250-eyou.net HELO, pleased to meet
250-AUTH=LOGIN PLAIN
250-AUTH LOGIN PLAIN
250-PIPELINING
250 8BITMIME
> auth login
334 VXNlcm5hbWU6
> cGx1c2tpZA==
334 UGFzc3dvcmQ6
> cGFzc3dvcmQ=
235 go ahead
> mail from: <pluskid@zju.edu.cn>
250 OK
> rcpt to: <pluskid@mstczju.org>
250 OK
> data
354 go ahead
> From: pluskid@zju.edu.cn
> To: pluskid@mstczju.org
> Subject: have a test
>
> This is the mail data
>
> .
250 OK:has queued
> quit
221 close connection
Connection closed by foreign host.
可 以看出确实是没有经过认证才出现那个问题的。通过查看 README.Debian.html 可以看出,由于 SMTP 服务器不支持 TLS 加密和 CRAM MD5 认证方式,密码都是明文传递(虽然经过了 base64 编码),这是非常不安全的,因此默认被禁止使用这种认证方式。要打开这个选项,需要在配置文件里面修改。
重新配置
Debian 系统提供一个配置模板,并使用一个脚本动态生成配置文件公 Exim4 使用。模板取决于前面对配置文件的选择,如果选择了单一配置文件,那么这个模板就是 /etc/exim4/exim4.conf.template 文件。打开并搜索 AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS ,这就类似于 c 语言的宏那样,在前面的适当位置定义一下这个变量就可以了:
AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS = true
修改了模板之后,我们重新运行一下脚本,重新生成一下配置文件
/usr/sbin/update-exim4.conf
这下终于可以正常使用了。
--------------------------------
Exim4配置smarthost使用gmail发邮件
debian发行版(包括ubuntu)使用exim4作为默认的邮件服务器, 如果想使用gmail account发送邮件, 需要做一下配置:
# dpkg-reconfigure exim4-config
1. 选择: 用 smarthost 发信: 无本地邮件
2. 输入系统邮件名称: etc, company.com
3. 输入监听的ip地址: 127.0.0.1
4. 请输入被此主机认为是以其自身为最终目的地址的域名列表: 空
5. 本地用户的可见域名: etc, company.com
6. 寄信使用的 smarthost 的 IP 地址或主机名: smtp.gmail.com::587
7. 为下列主机进行邮件中转 (relay): 空
8. 保持最小 DNS 查询量吗 (按需拔号,Dial-on-Demand): No
9. 将设置文件分拆成小文件吗: No(Yes也可以)
10. Root 和 postmaster 邮件的接收者: 空
# vi /etc/exim4/passwd.client 添加如下行, 注意修改用户名和密码
Java代码
1. gmail-smtp.l.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD
2. *.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD
3. smtp.gmail.com:yourAccountName@gmail.com:y0uRpaSsw0RD
gmail-smtp.l.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD *.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD smtp.gmail.com:yourAccountName@gmail.com:y0uRpaSsw0RD
# /etc/exim4/update-exim4.conf
# /etc/init.d/exim4 restart
重启完成后就可以发邮件了.
------------------------------
Ubuntu下实现exim4 配置gmail全步骤
1. sudo apt-get install exim4
2. 如果自动启动设置界面就设置,没有的话sudo dpkg-reconfigure exim4-config
1. 选择: 用 smarthost 发信: 无本地邮件
2. 输入系统邮件名称: etc, company.com
3. 输入监听的ip地址: 127.0.0.1
4. 请输入被此主机认为是以其自身为最终目的地址的域名列表: 空
5. 本地用户的可见域名: etc, company.com
6. 寄信使用的 smarthost 的 IP 地址或主机名: smtp.gmail.com::587
7. 为下列主机进行邮件中转 (relay): 空
8. 保持最小 DNS 查询量吗 (按需拔号,Dial-on-Demand): No
9. 将设置文件分拆成小文件吗: No(Yes也可以)
10. Root 和 postmaster 邮件的接收者: 空
3. sudo gedit /etc/exim4/passwd.client 加入下面3行 (改成自己的账号和密码)
1. gmail-smtp.l.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD
2. *.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD
3. smtp.gmail.com:yourAccountName@gmail.com:y0uRpaSsw0RD
4. sudo gedit /etc/exim4/exim4.conf.template
搜索 AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS,在之后加入一行代码
AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS = true
5. sudo /etc/exim4/update-exim4.conf
6. sudo /etc/init.d/exim4 restart
Test:
~:mail XXXX@gmail.com
SUBJECT: XXXX
XXXX(正文)
.(单独一行只有"." 为结束符号 )
Cc:(直接回车就可以)
查下邮箱收到没???
另:
tail /var/log/exim4/mainlog 查看日志。
ppt.cc/fVjECx ppt.cc/fEnHsx ppt.cc/fRZTnx ppt.cc/fSZ3cx ppt.cc/fLOuCx ppt.cc/fE9Nux ppt.cc/fL5Kyx ppt.cc/fIr1ax ppt.cc/f71Yqx tecmint.com linuxcool.com linux.die.net linux.it.net.cn ostechnix.com unix.com ubuntugeek.com runoob.com man.linuxde.net bit.ly/2EzoUDo bit.ly/2tW6eYT bit.ly/2X6vadl bit.ly/2viLpHU linuxprobe.com linuxtechi.com howtoforge.com linuxstory.org systutorials.com ghacks.net linuxopsys.com v.gd/2P9wTx v.gd/FtfpqE v.gd/eMfHsm v.gd/Ub7mqv v.gd/RReVk0 v.gd/vS3uTI v.gd/4Zxmba
No comments:
Post a Comment