Linux系统上架设一台高容量的POP3服务器

POP3(Post Office Protocol 3)即邮局协议的第3个版本,它规定怎样将个人计算机连接到互联网上的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。本文将介绍如何使用开源软件Procmail和Qpopper,在Linux系统上配置一台可供大量用户使用的POP3服务器。

1、下载Procmail和Qpopper

Procmail可从http://www.procmail.org/procmail-3.21.tar.gz下载。

Qpopper可从http://www.eudora.com/qpopper_general/下载。

2、编译Qpopper

假设下载的文件放在/root

#cd /root

#tar xvfz qpopper4.0.3.tar.gz

#cd qpopper4.0.3

#./configure --enable-hash-spool=2

--enable-log-login

--enable-server-mode

--enable-fast-update

--enable-shy

--enable-spool-dir=/usr/mail

--enable-specialauth

注释:

--enable-specialauth 使用/etc/shadow 密码认证

--enable-hash-spool=2 使用二级hash结构

--enable-spool-dir=/usr/mail 则用户信箱文件为/usr/mail/j/e/jephe

--enable-log-login 记录下成功的POP3登录进入syslog

--enable-server-mode和--enable-fast-update

不要让qpopper在用户存取信箱时拷贝信箱文件到临时文件,减少磁盘I/O,增强性能。

--enable-shy让服务器响应时不要显示版本信息,增强安全性。

#make

#make install

编辑文件/etc/inetd.conf

在/etc/xinetd.d下创建文件pop3,包含下面的内容:

service pop3
  {
  socket_type = stream
  protocol = tcp
  wait = no
  user = root
  server = /usr/local/lib/popper
  server_args = qpopper -F -S -s -c -R -T120
  port = 110
  }

注释:

-F enable fast update

-S enable server mode (在用户对该服务器没有shell存取时做)

-s 打开LOG功能

-c 忽略用户名的大小写

-R 不对连接进来的IP地址做反向域名检查

-T 设定超时时间

这样设定之后,如果用户jephe收取信件时,则先锁定信箱文件/usr/mail/j/e/jephe创建锁文件.jephe.pop,检查信件数目,退时出更新状态,生成.jephe.cache文件。

否则正常模式下是先把/usr/mail/j/e/jephe拷贝成.jephe.pop,最后用户检查信箱完毕再拷贝回来,增加了I/O处理时间

如果不是redhat则在/etc/inetd.conf中注释以pop-3开头的行,然后在后面再添加下面的行: pop-3 stream tcp nowait.400 root /usr/local/sbin/popper -F -S -s -c -R -T120

nowait:400中的400是指每分钟最多可接受的连接请求数目

如果你在/etc/hosts.deny中设置了ALL:ALL,则要在/etc/hosts.allow中输入

popper:ALL

3、编译Procmail

假设下载的文件放在/root

#cd /root

#tar xvfz procmail-3.21.tar.gz

#cd procmail-3.21

#vi src/authenticate.c

改#define MAILSPOOLDIR行后面的/var/spool/mail为 "/usr/mail/" (这里用的是/usr/mail)

改#define MAILSPOOLHASH 后面的0 为 2 (用二级hash目录,改进服务器文件系统性能,特别是有大量用户时)

  注:这样的话,如果用户的信箱为jephe@domain.com,则文件应存在

/usr/mail/j/e/jephe

#mv /var/spool/mail /var/spool/mail.bak

注:先换名这个目录,因为可能当编译时如果能找到该目录,则优先用该目录及hash层次结构,这样的话将存储用户邮件到文件/var/spool/mail/j/e/jephe.如果你就想用这个目录,就不用改上面的MAILSPOOLDIR行。

#make

#make install

#make install-suid

然后以root身份运行#procmail -v检查用户的邮件路径确认为/usr/mail/r/o/root。

4、创建POP3用户

你不需要为mail用户分配home目录,也不需要设置其主目录为/usr/mail/j/e (假定用户为jephe),用下面的命令创建用户。

#useradd jephe -c "Jephe Wu" -g mail -d /dev/null -s /bin/false

再可以写一个批命令用chpasswd给每个用户以同样的password.

1)首先用passwd为mailuser1设置密码,假定为"abc123",检查/etc/shadow中的密码。

2)创建一个新文件/tmp/password,每行包括一个用户名、密码 ,可从/etc/passwd用下面的命令取得。

cat /etc/passwd   awk -F: '{print $1}'  sed -e

's/$/:$$1$G22Plicn$r5.bSe0U7DbaHN7tCevTR//g'

c. 然后运行chpasswd < /tmp/password

5、FAQ

编译qpopper后,仍需在命令行上使用-F -S参数以启动服务器模式和快速更新,请放-F在-S的前面。

时间: 2025-01-26 17:31:36

Linux系统上架设一台高容量的POP3服务器的相关文章

域名解析方法及在Linux系统上架设DNS服务器

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;  DNS是域名系统Domain Name System的缩写,是一种组织域层次结构的计算机和网络服务命名系统,当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与此名称相关的IP地址信息.今天,我就给大家介绍一下目前常见的域名解析方法以及如何在Linux系统上架设DNS服务器,希望能够给各位朋友的DNS学习带来一些帮助. 一.域名解析的方法 1.最早的

Linux系统上架设VSFTP服务器实例解析

实验环境:AS4最小化安装 实验目标:架设VSFTP服务器 这次我们来学习Linux系统中的 vsftp服务器的配置. 下面我们开始了!首先我们安装vsftp服务器端的软件. vsftpd服务器的安装文件位于第1张安装光盘中. 使用rpm命名可顺利安装该软件包. # rpm -ivh vsftpd-2.0.1-5.i386.rpm 安装完后默认就可以启动vsftp服务了, [root@localhost ~]# service vsftpd start Starting vsftpd for v

在Linux系统上使用Bugzilla跟踪bug

对于负责提供支持的人而言,保持对问题.难题及其修订的跟踪,可能会是一项棘手的任务:不过,有一个完美的开源方案可以满足这一要求:Bugzilla.安装它之后,您就可以方便地跟踪 bug 了,并可在发现特定的问题和解决方案时得到通知.本文给出了在 Linux 系统上安装 Bugzilla 的逐步指南. Bugzilla 是一个缺陷或 bug 跟踪系统,这个系统能够让个人或者团队开发人员保持 对他们的产品中突出 bug 的跟踪.此类系统允许用户跟踪 bug 和代码修改,与其他队友沟通,提交和回顾修订补

如何在 Linux 系统上安装 Suricata 入侵检测系统

如何在 Linux 系统上安装 Suricata 入侵检测系统 随着安全威胁的不断发生,入侵检测系统(IDS)在如今的数据中心环境中显得尤为必要.然而,随着越来越多的服务器将他们的网卡升级到10GB/40GB以太网,对如此线路上的硬件进行计算密集型的入侵检测越来越困难.其中一种提升入侵检测系统性能的途径是多线程入侵检测系统,它将 CPU 密集型的深度包检测工作并行的分配给多个并发任务来完成.这样的并行检测可以充分利用多核硬件的优势来轻松提升入侵检测系统的吞吐量.在这方面有两个知名的开源项目,分别

在Linux环境下架设一台CVS服务器

CVS是一种广泛应用的.开源的.透明于网络的http://www.aliyun.com/zixun/aggregation/9591.html">版本控制系统.用户使用CVS时,首先要架设一台CVS服务器,在CVS服务器上导入项目实例.设置 CVS项目访问控制等.而客户则通过客户端来  访问CVS服务器,客户可以取得项目最新代码副本,提交自己修改的代码等,而客户可以从Internet. LAN甚至本机来访问CVS服务器.下面,我就带领大家在Linux环境下架设一台CVS服务器,希望能够对想

如何在现有的Linux系统上添加新的磁盘

作为一个系统管理员,我们会有这样的一些需求:作为升级服务器容量的一部分,或者有时出现磁盘故障时更换磁盘,我们需要将新的硬盘配置到现有服务器. 在这篇文章中,我会向你逐步介绍添加新硬盘到现有 RHEL/CentOS 或者 Debian/Ubuntu Linux 系统的步骤. 重要:请注意这篇文章的目的只是告诉你如何创建新的分区,而不包括分区扩展或者其它选项. 我使用 fdisk 工具 完成这些配置. 我已经添加了一块 20GB 容量的硬盘,挂载到了 /data 分区. fdisk 是一个在 Lin

[翻译]现代Linux系统上的栈溢出攻击【转】

转自:http://www.codeweblog.com/%E7%BF%BB%E8%AF%91-%E7%8E%B0%E4%BB%A3linux%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E6%A0%88%E6%BA%A2%E5%87%BA%E6%94%BB%E5%87%BB/ 现代Linux系统上的栈溢出攻击 2012.12.21 - 06:56 - jip 预备知识: 对C语言和 X86_64 汇编语言有基本的了解 ++++++++++++++++++++++++

ssh linux-从本机往虚拟机(linux系统)上传东西

问题描述 从本机往虚拟机(linux系统)上传东西 遇到一个特别匪夷所思的问题,本机安装了虚拟机,想用SecureCRT或WinSCP软件通过SSH协议把本机的JAR包上传到虚拟机,可就是传不上去,上传过程中软件如同死机一样没有反映.但上传word文档(小文件)就能传上去. 同事用他们的电脑用同样的方式连我的虚拟机就可以传我传不上的文件,请求下牛人们这是怎么回事,百思不得其解? 解决方案 是不是防火墙什么的过滤掉了啊?我猜测 解决方案二: 是不是本地杀毒软件拦截

如何在Linux系统上安装Domino Server

前言 在Linux系统上安装Domino Server是一个小小的挑战,其实并没有大家想想的复杂,既然是商业性的软件,OEM早就为我们解决了安装的难度,还有就是选择自己熟悉的Linux发行版,各个发行版操作上还是有一定的区别的,这里选择最新的Ubuntu Server 13.04,尽量在Server版本的Ubuntu上安装,虽然说Desktop版本也可以. 安装 Unbuntu server 13.4 下载Ubuntu server镜像 http://releases.ubuntu.mirror