第三章 在Debian上用Exim配置邮件服务器

本站整理   发布时间:2009-03-10 11:16:52   作者:jb51.net   我要评论
本文是在《通过exim建立家庭网络的邮件系统》一文的基础上修改的

输入用户名ganghua和她在linux下的口令。 输入姓名为ganghua Leng;
电子邮件地址为 ganghua@test.com
注意电子邮件地址必须以本地域做后面的地址。
4 小测试
  通过上述的设置,本地的用户之间应该已经可以实现相互的发送和回复信件了。在Outlook
Express里面的测试我就不说了,我来说一下在Debian上面用mail来做测试。
#
mail kanaka
Subject:
This is my First test-mail!
Hi,kanaka,
This is the first time that I send a mail by exim.
.
Cc: kanaka@yeah.net
#
  上面我们给本地的kanaka发了一封邮件,并抄送给了互联网上的kanaka@yeah.net。注意,要结束一封信的内容,在新的一行输入“.”就可以了。我在Win2000上用Outlook
Express就可以收到发给kanaka的信;而发给kanaka@yeah.net的信,我到freemail.yeah.net站点上去,也收到了。
  现在test.com已经真正成为了一个具有邮件转发功能的本地域,而且可以发送邮件到互联网上的kanaka@yeah.net。但是,一个格式为From:kanaka@test.com的地址显然是无法被外部用户回复的,
因为对于外部网络来说, test.com是一个不存在的(因而不合法)的域名。因此,我们还需要修改From:的地址。
5 修改 From: 的地址
  在往互联网上发送邮件的时候,为了他们可以正确的回复,我们必须把本地的From:地址格式改变成为一个合法的电子邮件地址。
借助于exim的"传送过滤器", 我们可以实现这一功能。
往外部转发的邮件经过这个传送过滤器以后, From:
中的地址就会被改变, 而对于本地邮件则没有什么影响。
  下面的过滤器将实现这个恶作剧式的技巧,
首先我们确定我们要改变的地址永远包含在"<>"符号之内。
虽然不能完全保证, 但是通常的邮件程序:mail甚至Microsoft
Outlook Express都是生成这种格式的电子邮件地址。
5.1 创建outfit文件
  我们来创建一个文件,/usr/bin/outfit,内容如下:
#!/usr/bin/perl
while (<STDIN>) {
if (/^From: /) {
s/<.*>/<'kanaka@yeah.net'>/;
print "$_"; last;
}
print "$_";
}
while (<STDIN>) { print "$_"; }
  把这个文件放到/usr/bin目录中,命名为outfit,不要忘记把上面的电子邮件地址换成你自己的电子邮件地址!
  然后,通过下面的命令chmod +x /usr/bin/outfit加上可执行的权限。
#
chmod +x /usr/bin/outfit
5.2 修改exim.conf
  打开/etc/exim/exim.conf,找到下面一行:
driver = smtp
  在它的下面加上两行,就成了:
driver = smtp
headers_remove = "sender"
transport_filter = "/usr/bin/outfilt"
  通过上述对/etc/exim.conf文件的修改,无论何时发送一封电子邮件到本地域以外时,都可以被exim正确的投递了。如果你使用的是拨号网络,那么Exim(通过daild)每发送一次邮件,就会向外拨一次号。而我们公司的宽带24小时在线,所以邮件每次都是直接就发出去了。
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"
poll pop3.yeah.net with proto POP3 user "kanaka@yeah.net" password "kanakapswd"
  .fetchmailrc文件可以在不同用户之间相互拷贝,只要把文件的属主设置成相关的用户即可。不过把用户的邮件密码用明码写在这个文件中显然是一种不明智的方式。
或许应该有更好的方法,请大家告诉我啊,呵呵。
  然后,使用fetchmail命令来把邮件从互联网上拖到本地来:
$
fetchmail
1 message for kanaka@yeah.net at
pop3.yeah.net (1648 octets).
reading message kanaka@yeah.net@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

相关文章

最新评论