分享
 
 
 

CyrusImap+Postfix在Linux下的安装

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

一般大家现在使用的Unix/Linux下邮件服务器都是基于对系统用户的认证,这在一定程度上留下了许多安全隐患,如果账户没有设置好,会导致不可弥补的失误,此外SMTP服务器的外发功能也可以被居心不良者用作发送垃圾邮件的中转站,因此建立一套基于非系统用户认证加带SMTP认证的邮件服务器对要求高性能高安全的用户来说就显得尤为重要,本文将介绍使用Cyrus Imap和Postfix组合的邮件服务实现上述功能。

由于我们使用的是非系统用户的认证方式,因此需要一个程序进行非系统用户的认证,cyrus IMAP在开发中就包含了一种叫SASL(Simple Authentication and Security Layer)他是一种基于基本协议的认证接口,他可以被大部分的协议调用作为验证工具,由于SASL是Cyrus项目开发的产品,因此他对Cyrus的支持是最完美的;此外我们还需要一个第三方数据库对邮件用户的用户名密码等资料进行存储,这里我们选用Berkeley Database,Berkeley Database是一种内含数据库并支持各种c/s结构的软件,Berkeley Database支持各种接口包括C, C++, Java, 和 Perl APIs等,被广泛的使用在Unix/Linux 平台上。

首先我们安装Berkeley DB,Berkeley DB最新版本是3.2.9,可以到http://www.sleepycat.com/download.html下载最新的版本,下载后用

tar zxvf db-3.2.9.tar.gz

cd db-3.2.9

cd dist

./configure

make

make install

安装完毕后不需要启动任何进程就可以使用Berkeley DB。

注意:为了便于以后的安装,我们可以把/usr/local/BerkeleyDB.3.2/lib 和/usr/local/BerkeleyDB.3.2/include下的所有文件相应的拷贝到/usr/lib和/usr/include下,如果有相同文件名的就进行强制覆盖。

安装SASL:先到http://asg2.web.cmu.edu/cyrus/download下载最新的SASL,下载后解压安装:

tar zxvf cyrus-sasl-1.5.24.tar.gz

cd cyrus-sasl-1.5.24

./configure –enable-login

注意:在configure 时应该有一下内容,才代表Cyrus包含了对Berkeley DB的支持:

checking for db_create in -ldb... yes

checking DB library to use... berkeley

如果没有上述内容请检查是否把BerkeleyDB下的lib/和include/内容拷贝到/usr/lib和/usr/include下配置完后进行安装

make

make install

注意:我们还需要把/usr/local/lib/sasl/所有文件拷贝到/usr/lib并把/usr/local/include/sasl下的所有文件拷贝到/usr/include/

安装Cyrus Imap:在安装之前我们先简单的介绍一下Cyrus Imap:

什么是 IMAP 以及为什么要使用它? IMAP( 互联网邮件访问协议 ) 提供了一种访问远程服务器上的电子邮件或 BBS 邮件的方法. IMAP 普遍被认为是 POP ( 邮局协议 ) 邮件的替代者. IMAP 允许用户从不同的机子上访问他们的电子邮件而不用下载那些邮件. 这种邮件的访问方式更加有效, 而且对终端用户来说有更多的好处,而Cyrus Imap是众多Imap版本中的一种,现在流行的imap软件主要有

o University of Washington Imap 是Imap的元老也是使用最广泛的Imap软件

o Cyrus

o PMDF

o Courier-IMAP

我们这里介绍的Cyrus Imap 是由Bob Anderson (boba@iserv.net) 和 Jorge Paramo (jorge@iserv.net)共同开发的一个项目,Cyrus Imap被设计成在一台不允许一般用户登录的服务器上运行. Cyrus 也被认为是 Unix 上的两个最普遍的 IMAP 服务器之一. 另一个是华盛顿大学的 IMAP 服务器.

到http://asg2.web.cmu.edu/cyrus/download下载最新的Cyrus Imap,下载后解压安装

tar zxvf cyrus-imapd-2.0.15.tar.gz

cd cyrus-imapd-2.0.15

创建cyrus用户

adduser –g mail cyrus

passwd cyrus

由于cyrus imap是通过sasl进行用户验证的,而sasl是把用户信息写入到/etc/sasldb文件中,因此cyrus用户需要有对/etc/sasldb文件读写的权限

chown cyrus /etc/sasldb*

./configure

configure的详细使用可以参照configure –help命令,你可以加入对openssl等的支持

make depend

make all CFLAGS=-O

make install

cyrus imap采用的是4.3BSD 格式的syslog,

vi /etc/syslog 并加入下面两行

local6.debug /var/log/imapd.log

auth.debug /var/log/auth.log

生成两个空白的日志文件

touch /var/log/imapd.log /var/log/auth.log

新建imap的配置文件

vi /etc/imapd.conf并添加下面几行

configdirectory: /var/imap

partition-default: /var/spool/imap

admins: cyrus wing

sasl_pwcheck_method: sasldb

创建相应的配置目录根据我们前面的配置文件进行设置

cd /var

mkdir imap

chown cyrus imap

chgrp mail imap

chmod 750 imap

cd /var/spool

mkdir imap

chown cyrus imap

chgrp mail imap

chmod 750 imap

cd /usr

mkdir sieve

chown cyrus sieve

chgrp mail sieve

chmod 750 sieve

以上命令都是有root用户完成的现在切合成cyrus用户进行相应目录和文件的安装

su cyrus

tools/mkimap

exit

Cyrus Imap还提供了一个很强大的功能-对邮件用户的邮件容量进行设置!在安装过程中需要使用chattr命令改变一些文件的属性

cd /var/imap

chattr +S user quota user/* quota/*

chattr +S /var/spool/imap /var/spool/imap/*

如果你使用的是senmail作MTA则需要执行下面一句

chattr +S /var/spool/mqueue

编辑/etc/services文件,如果文件中没有一下内容,则加入下面的几行

pop3 110/tcp

imap 143/tcp

imsp 406/tcp

acap 674/tcp

imaps 993/tcp

pop3s 995/tcp

kpop 1109/tcp

sieve 2000/tcp

lmtp 2003/tcp

fud 4201/udp

查看/etc/inetd.conf文或/etc/xinetd.d目录下是否有关于imap, imaps, pop3, pop3s, kpop, lmtp 和 sieve的内容,如果有则删去相应的内容

重新启动inet或xinet进程

/etc/rc.d/init.d/inet resart

/etc/rc.d/init.d/xinet restart

配置主进程文件:在原代码文件下的master/config目录下有相应的参考配置文件,我们选择最基本的安装文件

cp master/conf/small.conf /etc/cyrus.conf

如果你的cyrus imap在编译过程中有加入对openssl等的支持,则可以使用normal.conf

cp master/conf/normal.conf /etc/cyrus.conf

编辑/etc/cyrus.conf

lmtpunix cmd='lmtpd' listen='/var/imap/socket/lmtp' prefork=0

替换成

lmtpunix cmd='lmtpd' listen='/var/imap/socket/lmtp' prefork=1

启动cyrus imap

/usr/cyrus/bin/master &

测试cyurs iamp

telnet 127.0.0.1 143

或telnet 127.0.0.1 110

如果出现以下文字则表明imap工作正常

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

OK wing.com Cyrus IMAP4 v2.0.15 server ready

管理cyrus用户:根据前面的配置我们先添加管理员账户

/usr/local/sbin/saslpasswd cyrus

输入两次相同的密码后就把cyrus这个用户添加到数据库中

运行cyrus管理程序

/usr/local/bin/cyradm –u cyrus localhost

系统会提示你输入你的密码,把我们刚才输入的密码敲入后进入管理提示界面

localhost.localdomain>help

使用help命令看命令帮助

authenticate, login, auth authenticate to server

chdir, cd change current directory

createmailbox, cm, create create mailbox

deleteaclmailbox, dam, deleteacl remove ACLs from mailbox

deletemailbox, delete, dm delete mailbox

disconnect, disc disconnect from current server

exit, quit exit cyradm

help, ? show commands

listacl, lam, listaclmailbox list ACLs on mailbox

listmailbox, lm list mailboxes

listquota, lq list quotas on specified root

listquotaroot, lqr, lqm show quota roots and quotas for mailbox

renamemailbox, rename, renm rename (and optionally relocate) mailbox

server, servername, connect show current server or connect to server

setaclmailbox, setacl, sam set ACLs on mailbox

setquota, sq set quota on mailbox or resource

version, ver, info display version info of current server

比如我们要创建一个用户wing,并限制他的邮箱容量为10M,可以用下面这个命令

createmailbox user.wing (注:前面的user.不能省略)

setquota user.wing 10000 (以KB为单位)

如果你还想为改用户创建下级子目录可以用

createmailbox user.wing.dir1

createmailbox user.wing.dir2

createmailbox user.wing.dir1.dira

删除用户

deletemailbox user.wing

删除文件夹

deletemailbox user.wing.dir1

退出管理界面

exit

每生成一个用户后,需要用

/usr/local/sbin/saslpasswd userid

来给用户添加密码

添加完密码后用户就正式生效了,下面我们对生成的用户进行测试

/usr/local/bin/imtest -m login -a wing localhost

系统会出现以下界面并提示你输入密码

C: C01 CAPABILITY

S: * OK wing.xmgis.com Cyrus IMAP4 v2.0.15 server ready

S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS ID NO_ATOMI

C_RENAME UNSELECT MULTIAPPEND SORT THREAD=ORDEREDSUBJECT THREAD=REFERENCES IDLE

AUTH=DIGEST-MD5 AUTH=CRAM-MD5

S: C01 OK Completed

Password:

输入完用户wing的密码后如果系统出现以下信息则表示验证成功,否则需要检查密码是否正确以及系统是否正确安装;

C: L01 LOGIN wing {7}

+ go ahead

C: <omitted>

L01 OK User logged in

Authenticated.

Security strength factor: 0

用. Logout命令退出界面

. logout

* BYE LOGOUT received

. OK Completed

Connection closed.

如果一切都正常,表明Cyrus imap安装正常,你可以在客户端例如Microsoft的OE中进行设置,设置IMAP和POP3的方法和其它邮件的设置方法相同,我们就不详细介绍了。下面我们介绍Postfix的安装和配置。

在安装前,我们先介绍以下Postfix的一些基本情况:

postfix是一个由IBM资助下由Wietse Venema 负责开发的自由软件工程的一个产物,其目的是为用户提供除sendmail之外的邮件服务器选择。postfix力图做到快速、易于管理、提供尽可能的安全性,同时尽量做到和sendmail邮件服务器保持兼容性以满足用户的使用习惯。起初,postfix是以VMailer这个名字发布的,后来由于商标上的原因改名为postfix。postfix是在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。“postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真实一个让人吃惊的数字。Postfix试图更快、更容易管理、更安全,同时还与 sendmail保持足够的兼容性。”

postfix的特点

快速:postfix在性能上大约比sendmail快三倍。一部运行postfix的台式PC每天可以收发上百万封邮件。

兼容性好:postfix是sendmail兼容的,从而使sendmail用户可以很方便地迁移到postfix。Postfix支持/var[/spool]/mail、/etc/aliases、 NIS、和 ~/.forward 文件。

更健壮:postfix被设计成在重负荷之下仍然可以正常工作。当系统运行超出了可用的内存或磁盘空间时,postfix会自动减少运行进程的数目。当处理的邮件数目增长时,postfix运行的进程不会跟着增加。

更灵活:postfix是由超过一打的小程序组成的,每个程序完成特定的功能。你可以

通过配置文件设置每个程序的运行参数。

安全性:postfix具有多层防御结构,可以有效地抵御恶意入侵者。如大多数的postfix程序可以运行在较低的权限之下,不可以通过网络访问安全性相关的本地投递程序等等。

到http://www.postfix.org/ftp-sites.html下载postfix最新的版本

下载后进行解压安装

tar zxvf postfix-20010228-pl03.tar.gz

cd postfix-20010228-pl03

创建postfix用户,出于安全性的考虑,postfix需要创建一个用户来执行postfix的后台程序;

adduser –g mail postfix

此外postfix用户还需要有读/etc/sasldb的权限,所以建议把/etc/sasldb的属主组改为mail,并赋予相应的读写权限

chgrp mail /etc/sasldb

chmod g+r,g+w /etc/sasldb

为了让postfix支持sasl的认证方式,在编译前需要对Makefile进行修改

如果你先前有编译过postfix则先用

make tidy

命令清楚已经编译的文件

使用

make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/include"

AUXLIBS="-L/usr/lib -lsasl"

加入对SASL的支持,注意:我们在前面的步骤中已经把/usr/local/include和/usr/local/lib中关于sasl的相关文件考到/usr/include和/usr/lib下,所以在运行上述命令前,一定要确认这些步骤是否完成,否则在以后的编译中会出错。

make

sh ./INSTALL.sh

出现以下对话框

install_root: [/]

tempdir: [/home/wing/postfix-20010228-pl03]

config_directory: [/etc/postfix]

daemon_directory: [/usr/lib/postfix]

command_directory: [/usr/sbin]

queue_directory: [/var/spool/postfix]

sendmail_path: [/usr/sbin/sendmail]

newaliases_path: [/usr/bin/newaliases]

mailq_path: [/usr/bin/mailq]

mail_owner: [postfix]

setgid: [mail]

manpages: [/usr/local/man]

全部使用系统默认的设置,按回车后系统会自动安装Postfix

修改postfix的cf文件使支持Cyrus:

postfix的所有配置文件都在/etc/postfix,其中main.cf和master.cf是最主要的两个配置文件

cd /etc/postfix

vi main.cf

# default_privs = nobody

前面的注释去掉

myhostname = yourhost.com

设为自己本机的名字,并去掉前面的注释

去掉# myorigin = $myhostname前面的注释

如果你需要对SMTP服务进行信任设置的话,在

TRUST AND RELAY CONTROL

里面进行设置,详细的设置说明main.cf里面有说明,我们就不作介绍,也不作改动

设置别名,一般来说如果你先前没有安装象sendmail等邮件代理的话,在/etc/下是不会有aliases和aliases.db文件的,而 postfix则是把aliases和aliases.db存放在/etc/postfix目录下,为了使用的习惯建议大家在/etc/作个符号连接

ln –s /etc/postfix/aliases /etc/aliases

并在main.cf内修改相应的内容

alias_maps = hash:/etc/aliases

设置mail_spool的目录

mail_spool_directory = /var/spool/mail

mailbox_command = /usr/bin/procmail -o -a $DOMAIN -d $LOGNAME

mailbox_transport参数是设置邮件在经过aliases和转发检查后使用的传输选项,这里我们把他指向cyrus的lmpt程序

LMTP指的是本地邮件传输协议(Local Mail Transfer Protocol)主要用来处理postfix接受到本地邮件用户后的传送。

在这里我们设为

mailbox_transport = lmtp:unix:/var/imap/socket/lmtp

以上这些都是postfix支持cyrus imap的设置,为了让postfix支持SMTP认证,我们还需要加入下面的一些参数

smtpd_sasl_auth_enable = yes

smtpd_delay_reject=yes

smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated ermit_auth_destination reject

smtpd_client_restrictions = permit_sasl_authenticated

broken_sasl_auth_clients = yes

smtpd_sasl_security_options = noanonymous

保存退出后启动postfix进程,使用命令

postfix start

postfix命令主要的参数有

postfix start 启动服务

postfix stop 停止服务

postfix reload 重新启动服务

启动服务后使用telnet localhost 25命令进行检查,命令执行后如果有以下提示信息则表明postfix 工作正常

Trying 127.0.0.1...

Connected to localhost.localdomain.

Escape character is '^]'.

220 wing. com ESMTP Postfix (Postfix-20010228-pl03)

再敲入ehlo 127.0.0.1检查smtp验证是否生效

250-wing.com

250-PIPELINING

250-SIZE 10240000

250-ETRN

250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5

250-AUTH=LOGIN PLAIN DIGEST-MD5 CRAM-MD5

250 8BITMIME

则说明SMTP的验证也是生效的

最后就是对Postfix和cyrus进行检查了,在确认DNS配置正确后,在客户端以Outlook Express 5为列在账户设置中的服务器标签中选中我“的服务器要求身份验证”点击设置按钮选“使用于接受邮件服务器相同的设置”,如果你的邮件接受服务器有SMTP服务器不是同一台主机,则选则“登陆方式”并输入相应的用户和密码。

最后使用发信给本地用户,发信给其它邮件地址的用户,从其它服务器发邮件,接受邮件等方法测试Postfix 和Cyrus是否正常工作。

由于是第一次安装Postfix和Cyrus难免有失误之处希望大家多多指正

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有