◆ 局域网中的用户可以实现本地邮件的发送和转发。
◆ 发往局域网以外的邮件有正确From:<邮件地址>,以使外部的邮件能够正确的回复。
◆ 电子邮件账号是所有本地子网用户所共享,但是要实现每个用户仅仅能够收到自己的邮件。
◆ exim作为邮件的收发代理(它比sendmail好配置的多)。
◆ mail作为linux端的邮件客户程序。
◆ Microsoft Outlook Express 作为Win2000端的邮件客户程序(同样你也可以使用其它的类似工具,比如Foxmail)。
◆ qpopper 作为POP3服务器, 用来把邮件从Linux系统中转移到Win2000机器上。
◆ fetchmail 用来从互联网上收取邮件。
我在两台机器上(分别安装Linux和Win2000系统)做的测试,当然,win9x/NT/XP都可以,而 且两台机器都是Linux的话也当然可以。这个方案,应付一个中小型的办公室应该绰绰有余。
1.2 网络和命名
在这篇文章中我假定以下的名字(您实际应用时应该做写修改,以适应您的实际情况): ◆ 拥有者和系统管理员的名称 kanaka Leng。
◆ Linux机器名为 Debian。
◆ Win2000 机器名为 Notepad。 通常使用者为 ganghua Leng。
◆ kanaka 在 Debian 机器上的注册用户名为 kanaka。
◆ ganghua 在 Debian 机器上的注册用户名为 ganghua。
◆ ganghua 在 Notepad 机器上的注册用户名也为 ganghua。 她的在linux下的Debian机器和 Win2000上的口令也相同。
◆ 我们公司的局域网通过宽带连接互联网,当然你通过普通拨号也可以。
◆ kanaka 和 ganghua 都使用电子邮件地址:[email protected]。
◆ kanaka到POP3收信的口令为kanakapswd。
◆ ISP的发送邮件的邮件服务器为smtp.yeah.net。
◆ ISP的接受邮件的邮件服务器为pop3.yeah.net。
机器Debian和Notepad都属于一个域,域名为test.com。 这个域名是我们内部搞测试用的,我们并没有注册这个域名, 因而对于外部网络来说, 并不能直接识别这个域名。
此外,我还假设内部网络已经正常工作, 并且已经拥有使用daild实现的非永久拨号连接,或者宽带网连接。 在Debian机器上也没有安装DNS服务。/etc/resolv.conf中只是加入了ISP提供的两个DNS服务器的地址。同样的设置也要加在 Notepad机器上的TCP/IP设置中。
1.3 邮件地址
在"To:"和"From:"中指定邮件地址是一封邮件的基本组成部分, 此外还有更多的内容。 举例来说:To: ganghua Leng <[email protected]>
'ganghua Leng'是一个"real-name part"(真实姓名部分)。 这是通过撰写电子邮件的程序加上的。 这个部分就是将邮件发送给ganghua本人的依据。 注意:如果在real-name part中有句点存在, 邮件地址必须用"符号包围起来(例如:"kanaka C.Leng")。 您可以用man mailaddr参考一下相关的帮助页。
2 安装
由于我们已经安装了Debian基本系统,而Debian基本系统里面含有exim和mail这两个软件,所以我们只 需要安装这两个:fetchmail、fetchmailconf和qpopper。
# apt-get install fetchmail fetchmailconf qpopper |
其中,fetchmailconf是用来配置fetchmail的工具。
系统会有一些问题提问你。当问你是否以root身份运行system-wide fetchmail时,答Yes。其他的都选默认值。
3 配置
3.1 配置Debian的hosts
Debian机器上的/etc/hosts文件内容如下:
127.0.0.1 localhost 192.168.1.1 Debian.test.com Debian 192.168.1.2 Notepad.test.com Notepad |
3.2 配置exim
在Debian下,这一切都是由eximconfig程序来完成的。# eximconfig |
程序将问到一些问题,你可以参考下面的回答:
◆ 你的系统是一个Internet主机(选择1,虽然你在局域网。这样你可以发邮件到互联网)。127.0.0.1 localhost 192.168.1.1 Debian.test.com Debian 192.168.1.2 Notepad.test.com Notepad |
# mail kanaka Subject: This is my First test-mail! Hi,kanaka, This is the first time that I send a mail by exim. . Cc: [email protected] # |
上面我们给本地的kanaka发了一封邮件,并抄送给了互联网上的[email protected]。注意,要结 束一封信的内容,在新的一行输入“.”就可以了。我在Win2000上用Outlook Express就可以收到发给kanaka的信;而发给[email protected]的信,我到freemail.yeah.net站点上去,也收到 了。
现在test.com已经真正成为了一个具有邮件转发功能的本地域,而且可以发送邮件到互联网上的[email protected]。但是,一个格式为 From:[email protected]的地址显然是无法被外部用户回复的, 因为对于外部网络来说, test.com是一个不存在的(因而不合法)的域名。因此,我们还需要修改From:的地址。
5 修改 From: 的地址
在往互联网上发送邮件的时候,为了他们可以正确的回复,我们必须把本地的From:地址格式改变成为一个合法的电子邮 件地址。 借助于exim的"传送过滤器", 我们可以实现这一功能。 往外部转发的邮件经过这个传送过滤器以后, From: 中的地址就会被改变, 而对于本地邮件则没有什么影响。 下面的过滤器将实现这个恶作剧式的技巧, 首先我们确定我们要改变的地址永远包含在"<>"符号之内。 虽然不能完全保证, 但是通常的邮件程序:mail甚至Microsoft Outlook Express都是生成这种格式的电子邮件地址。
5.1 创建outfit文件
我们来创建一个文件,/usr/bin/outfit,内容如下:
#!/usr/bin/perl |
# chmod +x /usr/bin/outfit |
5.2 修改exim.conf
打开/etc/exim/exim.conf,找到下面一行:
driver = smtp |
在它的下面加上两行,就成了:
driver = smtp |
6 配置Fetchmail
我们需要运行fetchmailconfig,来在你的主目录里产生一个叫.fetchmailrc的文件,否则你就 不能使用fetchmail。 fetchmial将从互联网的邮件服务器上取回邮件(并转交给exim再做本地投递)。# fetchmailconfig fetchmialconf must be run under X |
你看到了吧,它说fetchmialconf这个程序比如在X下面运行。唉!我们要把debian做服务器用, 而服务器根本不需要安装X的,我们不会为了配置fetchmail再去安装一个X系统和一个窗口管理器吧!好吧,那么我们就手工写这个文件吧,其实也很简 单。
由于我们是要把邮件接收到kanaka在本地的信箱里面,所以应该在kanaka的主目录里面产生这个.fetchmailrc,所以我们切换到 kanaka用户,再进行操作:
# su kanaka $ cd $ nano .fetchmailrc |
然后,输入以下内容,存盘退出即可:
set postmaster "postmaster" |
$ fetchmail 1 message for [email protected] at pop3.yeah.net (1648 octets). reading message [email protected]@pop3.yeah.net:1 of 1 (1648 octets) . flushed |
然后,你可以在win2000的Outlook Express里面,从本地接收这些邮件。
7 修改exim的投递限制
Exim 缺省的一次投递邮件的最大数量为100封。 你可以根据你们单位的实际情况,修改这个值。如果需要取消这个限制,就把它改为0,不过小心受到攻击: smtp_accept_queue_per_connection = 0 |
8 综合测试
你可以在Debian上和Win2000上多发几封邮件,做一下测试。
9 TODO
在下一个版本中,我们将描述如何使用.forward文件,实现转发,把信件正确的投递邮件给某个用户,而不 是一下子都发给kanaka。
我们还将描述,如何建立一个webmail系统。
10 结束语
本文是《Debian服务器设置入门》系列教程之第三章,建议您按照顺序阅读,有问题可以和作者kanaka联系。
11 参考文献
本文在开头就声明,本文是在《通过exim建立家庭网络的邮件系统》一文的基础上修 改的,作者:Jan W. Stumpel, Oegstgeest, The Netherlands。
这篇章的地址是:http://211.167.66.225/~yzhao/lg-zh/lg-zh-issue8/stumpel.html
之所以这样,是因为,这篇文章对我们来说太珍贵了,除了她,我没有找到其他关于exim的资料。
非常感谢原文作者,以及翻译者!