设置一个企业级的LinuxPOP3服务器

发表于:2007-07-04来源:作者:点击数: 标签:
一: 概述 本文旨在介绍如何使用开放源软件Procmail和Qpopper来设置一台可供企业级客户使用的POP3 服务器 ,同时保证极好的 性能 和 安全 性。重点介绍如何设置Procmail和Qpopper利用hash spool 目录结构存储用户邮件。 二: 步骤 软件环境为RedHat Linux 6.2 1

  一: 概述
  本文旨在介绍如何使用开放源软件Procmail和Qpopper来设置一台可供企业级客户使用的POP3服务器,同时保证极好的性能安全性。重点介绍如何设置Procmail和Qpopper利用hash spool 目录结构存储用户邮件。
  
  二: 步骤
  软件环境为RedHat Linux 6.2
  
  1. 下载最新版的Procmail和Qpopper
  
  Procmail 最新版本现在是3.21 可从http://www.procmail.org/procmail-3.21.tar.gz下载。Qpopper 最新版本现在是4.0 可从http://www.eudora.com/qpopper_general/下载
  
  2. 编译Procmail
  
  假设下载的文件放在/root
  
  #cd /root
  
  #tar xvfz procmail-3.21.tar.gz
  #cd procmail-3.21
  
  #vi src/authenticate.c
  改#define MAILSPOOLHASH 后面的0 为 2 (二级hash目录,改进服务器性能,特别是有大量用户时)
  
  注:这样的话,如果用户的信箱为jephe@domain.com,则文件应存在/usr/mail/j/e/jephe
  
  再改src/autoconf 文件,这里我用的mail spool目录为/usr/mail,则
  #vi src/autoconf
  搜索/usr/mail,改for a in /var/spool/mail /usr/spool/mail /var/mail /usr/mail /spool/mail到for a in /usr/mail
  
  #make
  #make install-suid
  
  然后以root身份运行#procmail -v检查用户的邮件路径是不是/usr/mail/r/o/root。
  
  3. 编译Qpopper
  
  假设下载的文件在/root
  
  #cd /root
  #tar xvfz qpopper4.0.4.tar.gz
  #cd qpopper4.0.4
  #vi popper/pop_extend.c
  change "IMPLEMENTATION %s%.*s%s-version-%s\r\n" to "IMPLEMENTATION \r\n".
  为什么?
  因为如果不改的话,用户用te.net server 110命令然后用user username and passpassword命令通过认证后,可以用capa命令得到服务器的qpopper版本号。
  
  ##./configure --enable-hash-spool=2 --enable-log-login --enable-server-mode--enable-shy
  --enable-spool-dir=/usr/mail --enable-specialauth --enable-temp-drop-dir=/var/spool/cache
  --enable-fast-update --disable-check-pw-max --disable-old-spool-loc
  
  note:
  
  你也可以编译成独立运行模式,在上面的编译选项后加上
  --enable-standalone即可,这样就不用下面介绍的xinetd中的设置和/etc/inetd.conf中的设置而直接运行了命令行为/usr/local/sbin/popper -S -F -s -c -R -T120
  
  注: --enable-specialauth 使用/etc/shadow 密码认证
  --enable-hash-spool=2 用二级hash结构
  --enable-spool-dir=/usr/mail 则用户信箱文件为/usr/mail/j/e/jephe
  
  关于--enable-fast-update?
  如果你的临时spool目录/var/spool/cache所在的分区和mail spool/usr/mail所在的分区不同,则不要用--enable-fast-update,因为不仅你享受不到fast-update模式带来的好处,还会在maillog中留下多余的错误信息。
  
  #make
  #make install
  
  你需要在/usr/mail和/var/spool/cache下创建两层hash目录结构,可以写一个script来做。
  
  编辑文件/etc/inetd.conf
  注释以pop-3开头的行,然后在后面再添加下面的行:
  pop-3 stream tcp nowait.400 root /usr/local/sbin/popper -F -S -s -c -R -T120
  
  如果是Redhat 7.1 ,则在/etc/xinetd.d下创建文件pop3,包含下面的内容:
  
  service pop3
  {
  socket_type = stream
  protocol = tcp
  wait = no
  user = root
  server = /usr/local/sbin/popper
  server_args = qpopper -S -F -s -c -R -T120
  port = 110
  }
  
  如果你在/etc/hosts.deny中设置了ALL:ALL,则要在/etc/hosts.allow中输入
  
  popper:ALL
  
  另外,在Redhat 7中在/etc/xinetd.d下面有个文件ipop3,是默认的pop3服务,你应该删掉这个文件或者注释出该服务。
  
  3. 创建POP3用户
  
  你不需要为mail用户分配home目录,也不需要设置其主目录为/usr/mail/j/e (假定用户为jephe),用下面的命令创建用户。
  
  #useradd mailuser1 -c "Mail User1" -g mail -d /dev/null -s /bin/false
  
  再可以写一个批命令用chpasswd给每个用户以同样的password.
  
  a. 首先用passwd为mailuser1设置密码,假定为"abc123",检查/etc/shadow中的密码,我的机器上"abc123"为 $1$G22Plicn$r5.bSe0U7DbaHN7tCevTR/
  
  b. 创建一个新文件/tmp/password,每行包括一个用户名:密码 ,可从/etc/passwd用下面的命令取得cat /etc/passwd | awk -F: '{print $1}' |sed -e's/$/:$$1$G22Plicn$r5.bSe0U7DbaHN7tCevTR\//g'
  
  c. 然后运行chpasswd < /tmp/password

原文转自:http://www.ltesting.net