LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 10128|回复: 6

[倾情推荐] Postfix邮件系统系列指南之一

[复制链接]
发表于 2002-11-7 13:29:10 | 显示全部楼层 |阅读模式
非常好的文章!

http://www.cngnu.org/technology/Postfix_I.html


CNGNU Postfix邮件系统系列指南之一
Postfix + Cyrus-IMAP + Cyrus-SASL + MySQL
完全指南



作者:王兴宇 <wxy@cngnu.org>

版本:0.30

版权:GPL

发布日期:2002-9-12


目录

1.  概述

1.1.  目的

1.2.  更新历史

1.3. TODO

1.4. 鸣谢

2.  系统功能

3.  系统基本前提

4.  配置MySQL

4.1.  配置

5.  安装pam_mysql

5.1.  下载

5.2.  编译与安装

5.3.  配置

6.  安装Cyrus-SASL

6.1.  下载

6.2.  编译与安装

6.3.  配置

7.  安装Postfix

7.1.  下载

7.2.  编译与安装

7.3.  配置

8.  安装Cyrus-IMAP

8.1.  下载

8.2.  编译与安装

8.3.  配置

9.  测试

9.1.  启动

9.1.1.  启动MySQL

9.1.2.  启动Postfix

9.1.3.  启动Cyrus-IMAP

9.1.4.  启动脚本

9.2.  测试

9.2.1.  测试MySQL

9.2.2.  测试Postfix

9.2.3.  测试Cyrus-IMAP

9.2.4.  测试邮件
1.  概述
1.1.  目的

  本文试图介绍如何在一个Linux平台上安装一套功能完整的邮件系统。这里我们以Postfix做SMTP服务器、Cyrus-IMAP做POP3/IMAP4服务器、通过Cyrus-SASL对存储在MySQL数据库中的用户进行验证和授权。

  这个邮件系统的设计目标是提供一个可扩充的、具备大多数功能的邮件系统。

  本文的最新版本可以在这里找到:
格式 URL
简体中文/HTML http://www.cngnu.org/technology/Postfix_I.html
繁体中文/HTML http://www.cngnu.org/technology/Postfix_I.tw.html
简体中文/TEXT http://www.cngnu.org/technology/Postfix_I.txt
繁体中文/TEXT http://www.cngnu.org/technology/Postfix_I.tw.txt

  有关本文所涉及的技术问题,请到http://www.cngnu.org/forum/的linux版讨论,我会尽快回复的。

  本文的版权遵循GPL,可以在不删除版权信息和注明修改的情况下任意传播。
1.2.  更新历史

    * 2002-5-21 第一次发布,版本0.20。
    * 2002-8-13 修正一些错误,版本0.21。
    * 2002-8-23 修正一些错误,版本0.22。
    * 2002-9-12 在RedHat Linux Advance Server V2.1上进行了测试,修正了一些错误,版本0.30。

1.3.  TODO

    * 增加Courier-IMAP部分的内容
    * 增加SqWebmail部分的内容
    * 增加SSL部分的内容

1.4.  鸣谢

  谢谢lesson.ward、Yunping Zhu的指正。



  参考文档:http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/index.html
2.  系统功能

  系统逻辑结构:


+-----------------------------------------------------------------------+
|                                                                       |
|  25/25    25/25     110/993  143/995    80/443     110/993  143/995   |
| Incoming Outgoing     POP3     IMAP    WEB-MAIL      POP3     IMAP    |
|    /\       /\         /\       /\        /\          /\       /\     |
|    ||       ||         ||       ||        ||          ||       ||     |
|    \/       \/         \/       \/        \/          \/       \/     |
+-------------------+---------------+---------------+-------------------+
|    Postfix        |               |    SqWebmail  |                   |
|                   |               +-------+-------+                   |
|                   |      Cyrus-IMAP       |         Courier-IMAP      |
|       +-----------+-----------------------+---------------------------+
|       |                           Cyrus-IMAP                          |
|       +---------------------------------------------------------------+
|       |                               PAM                             |
|       +---------------------------------------------------------------+
|       |                            pam_mysql                          |
+-------+---------------------------------------------------------------+
|                                  MySQL                                |
+-----------------------------------------------------------------------+

3.  系统基本前提

  本文以Linux系统为目标平台,支持多数的Linux平台如RedHat 7.x、Mandrake 8.x等,理论上也会支持其他的Linux发行版,甚至其他的UNIX系统。

  这里以RedHat Linux Advance Server V2.1(该系统与RedHat V7.3基本相同)为说明平台。

  该说明平台除了基本的操作系统部分外,系统中还安装了如下的RPM:

  一、gcc:

    1.  gcc-2.96-108.1

    2.  gcc-c++-2.96-108.1

  二、db3:

    1.  db3.3-devel-3.3.11.5

    2.  db3.3-3.3.11-5

    3.  db3-utils-3.3.11-5

  三、pam:

    1.  pam-0.75-29

    2.  pam-devel-0.75-29

  四、mysql:

    1.  mysqlclient9-3.23.22-6

    2.  mysql-3.23.41-1

    3.  mysql-server-3.23.41-1

    4.  mysql-devel-3.23.41-1

  如果系统中没有,请自行安装RPM包或编译安装。除此之外,其他需要的部分将以源码方式编译。
4.  配置MySQL
4.1.  配置

  MySQL安装配置好以后,在MySQL中创建邮件用户数据库,并添加一个测试用户“tester”:

# mysql mysql

mysql> CREATE DATABASE mail;

mysql> GRANT ALL ON mail.* TO mail@localhost

  -> IDENTIFIED BY "secret";

mysql> FLUSH PRIVILEGES;

mysql> USE mail;

mysql> CREATE TABLE user (

  -> username varchar(32) NOT NULL default '',

  -> password varchar(32) binary NOT NULL default '',

  -> forward varchar(128) NOT NULL default '',

  -> status int(11) NOT NULL default '1',

  -> UNIQUE KEY username (username)

  -> );



mysql> INSERT INTO user VALUES

  -> ('tester','testpw','tester',1);



mysql> \q

  上面的mail数据库的user表用来保存用户信息:

    * username和password字段就是用户名和明文密码。
    * forward字段默认情况下与username一样,在此情况下,邮件递交到本地邮箱(由于Postfix区分邮箱的大小写,所以通过这样的一个转发,正好可以消除大小写的区别);如果forward字段是另外一个用户名或者邮件地址,则该邮件被转发到别的用户或其它邮件地址。
    * status字段用来指示该用户是否有效,可以通过修改该值为0来禁止某个用户。

  一些软件对mysql的本地连接使用的另外一个位置的sock入口,做个软连接:

# ln –s /tmp/mysql.sock /var/lib/mysql/mysql.sock
5.  安装pam_mysql
5.1.  下载

  http://sourceforge.net/projects/pam-mysql/

  wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.4.7.tar.gz

  注:如果不能访问该网站取得pam_mysql,请自行使用代理服务器访问。
5.2.  编译与安装

  编译pam_mysql:

# tar -xvzf pam_mysql-0.4.7.tar.gz

# cd pam_mysql

# make

# cp pam_mysql.so /lib/security

  有些情况下,这个编译会报错,但是编译出来的模块还是可以用的。
5.3.  配置

  创建/etc/pam.d/imap,它用来支持Cyrus-IMAP的imap认证:

# echo auth sufficient pam_unix_auth.so >> /etc/pam.d/imap
# echo account sufficient pam_unix_acct.so >> /etc/pam.d/imap

# echo auth sufficient pam_mysql.so user=mail passwd=secret host=localhost db=mail table=user \

usercolumn=username passwdcolumn=password crypt=0 >> /etc/pam.d/imap

# echo account required pam_mysql.so user=mail passwd=secret host=localhost db=mail table=user \

usercolumn=username passwdcolumn=password crypt=0 >> /etc/pam.d/imap

  这里前面两行指是通过UNIX的基本方式认证用户(即系统用户),后面两行是指通过mysql数据库来认证用户。这里我们之所以保留UNIX系统认证模式,是因为我们下面要通过系统用户cyrus来管理cyrus-imap邮箱。不过你也可以选择将这个管理帐号cyrus放入mysql认证数据库里面,只需要你在上面的数据库里面添加一个cyrus用户。



  同样创建/etc/pam.d/pop ,它用来支持Cyrus-IMAP的pop3认证:

# cd /etc/pam.d

# ln –s imap pop

  同样创建/etc/pam.d/smtp ,它用来支持Postfix的smtp auth认证:

# cd /etc/pam.d

# ln -s imap smtp

  系统上可能已经存在了一个/etc/pam.d/smtp文件,请将原来的改名或者删除。
6.  安装Cyrus-SASL
6.1.  下载

  http://asg.web.cmu.edu/cyrus/download/

  wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-1.5.28.tar.gz
6.2.  编译与安装

  编译Cyrus-sasl,只支持需要的plain和login认证方式:

# tar -zxvf cyrus-sasl-1.5.28.tar.gz

# cd cyrus-sasl-1.5.28

# ./configure --disable-sample --disable-saslauthd --disable-pwcheck --disable-cram --disable-digest \

--disable-krb4 --disable-gssapi --disable-anon --enable-plain --enable-login



# make

# make install



# ln -s /usr/local/lib/sasl /usr/lib/sasl

  系统上如果已经安装了SASL,请先删除这些RPM或/usr/lib/sasl这个目录。



  加载链接库:

# echo /usr/local/lib >> /etc/ld.so.conf

# echo /usr/local/lib/sasl >> /etc/ld.so.conf

# ldconfig



  注意,这里使用的是SASL V1,目前SASL V2和Postfix配合上可能还有问题。
6.3.  配置

  设置Postfix使用SASL的PAM模块来支持smtp auth认证:

# echo pwcheck_method: pam > /usr/lib/sasl/smtpd.conf

    Cyrus-IMAP的SASL配置不使用标准的sasl语法,它的配置文件放在/etc/imapd.conf中,详细配置在Cyrus-IMAP部分说明。

  整个系统使用的认证机制比较复杂。所有的应用(SMTP、IMAP、POP3等)都采用SASL V1来认证;而SASL是通过它所支持的PAM模块来借助pam_mysql接口对存储在MySQL数据库中用户信息进行认证的。
7.  安装Postfix
7.1.  下载

  http://www.postfix.org/ftp-sites.html

  wget http://postfix.energybeam.com/source/official/postfix-1.1.11.tar.gz
7.2.  编译与安装

  如果你的系统上原来有sendmail,先将其停止并将其文件改名:

# /etc/init.d/sendmail stop

# mv /usr/bin/newaliases /usr/bin/newaliases.OFF

# mv /usr/bin/mailq /usr/bin/mailq.OFF

# mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF



  然后添加两个组:postfix和maildrop和一个用户:postfix

# groupadd –g 12345 postfix

# groupadd -g 54321 postdrop

# useradd –u 12345 –g 12345 -c postfix -M -d/no/where -s/no/shell postfix

  这里的组和用户的ID是系统中未使用的ID。



  编译Postfix,并支持mysql和sasl:

# tar -xvzf postfix-1.1.11.tar.gz

# cd postfix-1.1.11



# make -f Makefile.init makefiles 'CCARGS=-DUSE_SASL_AUTH -DHAS_MYSQL -I/usr/include/mysql' \

'AUXLIBS=-L/usr/lib/mysql -lmysqlclient –lsasl -lz -lm'

# make install

  安装时,安装程序会提问一些问题,可以直接按回车采用默认值。



  给postfix用户做一个系统别名,使用/etc/aliases别名数据库中:
# echo 'postfix: root' >> /etc/aliases

  生成/etc/aliases别名数据库:
# postalias /etc/aliases


7.3.  配置

  修改/etc/postfix/master.cf中的cyrus的配置,将如下一行:
flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}

  修改为:
flags=R user=cyrus argv=/usr/cyrus/bin/deliver –r ${sender} -m ${extension} ${user}

  这里要把cyrus的路径修改为你的cyrus实际安装路径。



  修改/etc/postfix/main.cf的配置:

myhostname = mail00.cngnu.org

mydomain = cngnu.org

myorigin = cngnu.org

mydestination = $mydomain,$myhostname



mailbox_transport = cyrus

virtual_maps = hash:/etc/postfix/virtual,mysql:/etc/postfix/mysql-virtual.cf



smtpd_sasl_auth_enable = yes

smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination reject

broken_sasl_auth_clients = yes

smtpd_sasl_security_options = noanonymous



  创建/etc/postfix/mysql-virtual.cf,它提供了本地用户和邮件转发功能。forward字段和username字段值默认是相同的,此时邮件本地递交到用户邮箱:username里面;forward是另外一个邮件地址或用户时,邮件转发到新的地址。此外,由于Postfix对于邮箱区别大小写,通过virtual功能的重写,可以保证大小写的邮件地址都可以正确接收。

#

# mysql config file for alias lookups on postfix

#



# the user name and password to log into the mysql server

hosts = localhost

user = mail

password = secret



# the database name on the servers

dbname = mail



# the table name

table = user



select_field = forward

where_field = username

additional_conditions = and status = '1'



  创建上面指定的/etc/postfix/virtual的DB库,并将超级用户的邮箱转发到一个普通用户如tester:

# echo 'root tester' >> /etc/postfix/aliases

# postmap /etc/postfix/virtual

  保留db3格式的virtual库是为了系统添加一些虚拟域和转发方便起见。


8.  安装Cyrus-IMAP
8.1.  下载

  http://asg.web.cmu.edu/cyrus/download/

  wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.0.16.tar.gz
8.2.  编译与安装

  编译Cyrus-IMAP,并取消kerberos支持(在Redhat中,kerberos库有问题,很难编译通过,Mandrake则可以通过;此外,我们也不需要kerberos的支持):

# tar -zxf cyrus-imapd-2.0.16.tar.gz

# cd cyrus-imapd-2.0.16



# ./configure --with-cyrus-prefix=/usr/local/cyrus --with-sasl=/usr/local/lib/sasl –-with-auth=unix



# make depend

# make all CFLAGS=-O

# make install



  Cyrus-IMAP的安装脚本有问题,cyradm(现在使用的是Perl版本,原来的TCL版本不再支持)所需要的perl模块被安装到一些不在Perl的@INC的目录里,需要手工安装.

  编辑安装文件里面的perl/imap/Makefile文件,修改其中下列部分:
prefix=/usr/local
INSTALLPRIVLIB = $(PREFIX)/lib/5.6.1
INSTALLARCHLIB = $(PREFIX)/lib/5.6.1/i386-linux
INSTALLSITELIB = $(PREFIX)/lib/site_perl/5.6.1
INSTALLSITEARCH = $(PREFIX)/lib/site_perl/5.6.1/i386-linux

  修改为:
prefix=/usr
INSTALLPRIVLIB = $(PREFIX)/lib/perl5/5.6.1
INSTALLARCHLIB = $(PREFIX)/lib/perl5/5.6.1/i386-linux
INSTALLSITELIB = $(PREFIX)/lib/perl5/site_perl/5.6.1
INSTALLSITEARCH = $(PREFIX)/lib/perl5/site_perl/5.6.1/i386-linux

  然后进行安装:

# cd perl/imap

# make install


8.3.  配置

  创建主配置文件/etc/cyrus.conf:

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

  添加cyrus-imap的管理账号cryus:

# useradd -g mail cyrus

# passwd cyrus

Changing password for user cyrus.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.



  创建IMAP配置文件/etc/imapd.conf,管理员是cyrus:

configdirectory: /var/imap

partition-default: /var/spool/imap

admins: cyrus

sasl_pwcheck_method: pam



  建立Cyrus-IMAP服务器的目录结构:

# mkdir –p /var/imap/sieve

# mkdir /var/spool/imap



# chown –R cyrus:mail /var/imap

# chown –R cyrus:mail /var/spool/imap



# su cyrus

$ tools/mkimap

$ exit

  这里tools/mkimap这个实用程序在cyrus-imap的源程序目录里面。



  创建日志:

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

# echo local6.debug /var/log/imapd.log >> /etc/syslog.conf

# echo auth.debug /var/log/auth.log >> /etc/syslog.conf



# /etc/rc.d/init.d/syslog restart

  设置邮件限额:

# chattr +S /var/imap/user /var/imap/user/*

# chattr +S /var/imap/quota /var/imap/quota/*

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



  由于Cyrus-IMAP的主控进程和Postfix的主控进程名字一样,容易混淆而且不方便控制,所以将Cyrus-IMAP服务器的主控进程做个别名连接:cyrusd。

# cd /usr/cyrus/bin

# ln –s master cyrusd
9.  测试
9.1.  启动
9.1.1.  启动MySQL

  MySQL在前面配置的时候已经启动。

  启动命令如下:

# /etc/init.d/mysqld start
9.1.2.  启动Postfix

  启动命令如下:

# /usr/sbin/postfix start

  或:

# /etc/rc.d/init.d/sendmail start
9.1.3.  启动Cyrus-IMAP

  启动命令如下:

# /usr/local/cyrus/bin/cyrusd&
9.1.4. 启动脚本

  可以编写一个启动脚本mailsys来启动这些进程,这样就不需要单独启动postfix和cyrusd了:

#!/bin/bash
#
# mailsys This shell script takes care of starting and stopping
# Postfix and Cyrus-IMAP.

# author : xingyu.wang <wxy@cngnu.org> 2002/5/19
#
# chkconfig: 2345 80 30
# description: Postfix is a Mail Transport Agent, which is the program
# that moves mail from one machine to another.Cyrus-IMAP is a Mail

# Deliver Agent, which provide POP3 and IMAP4 services for user and

# deliver mail to local mailbox.
# processname: mailsys
# pidfile: /var/run/mailsys.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network



# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -f /usr/sbin/postfix ] || exit 0

[ -f /usr/cyrus/bin/cyrusd ] || exit 0



RETVAL=0
prog="Mail System"

start() {
# Start daemons.

echo -n $"Starting $prog: "

echo -n $"SMTP "
/usr/sbin/postfix start > /dev/null 2&>1 &

echo -n $"OP3 IMAP4 "

/usr/cyrus/bin/cyrusd > /dev/null 2&>1 &

RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mailsys
return $RETVAL
}



stop() {
# Stop daemons.
echo -n $"Shutting down $prog: "
echo -n $"SMTP "

/usr/sbin/postfix stop > /dev/null 2&>1 &

echo -n $"OP3 IMAP4 "

killproc `pidof cyrusd`
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mailsys
return $RETVAL
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac

exit $RETVAL


9.2.  测试

 为了清楚起见,以下输入的命令用红色字体标示,系统显示信息用黑色字体标示。
9.2.1.  测试MySQL

  启动MySQL后,首先检查日志/var/log/messages有无错误信息,然后检查进程,应该有如下进程存在:

# pstree | grep safe-mysqld



|-safe-mysqld---safe-mysqld---safe-mysqld



  接着检查端口,应该有如下端口打开:

# netstat -an | grep LISTEN



tcp  0  0 127.0.0.1:3306  0.0.0.0:*  LISTEN

  再使用如下命令测试MySQL:

# mysql mail -u mail –p

Enter password: (secret)
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 99 to server version: 3.23.49

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show tables;

+------------------+
| Tables_in_mail   |
+------------------+
| user             |
+------------------+

1 rows in set (0.00 sec)

mysql> select * from user;

+----------+----------+----------------------------+--------+
| USERNAME | PASSWORD | FORWARD                    | STATUS |
+----------+----------+----------------------------+--------+
| tester   | testpw   | tester                     | 1      |
+----------+----------+----------------------------+--------+

1 rows in set (0.00 sec)

mysql> \q

Bye


9.2.2.  测试Postfix

  启动Postfix后,首先检查日志/var/log/messages有无错误信息,然后检查进程,应该有如下进程存在:检查端口及进程:

# pstree |grep master



|-master-+-pickup



  接着检查端口,应该有如下端口打开:

# netstat -an |grep LISTEN



tcp  0  0 0.0.0.0:25  0.0.0.0:*  LISTEN



  再检测SMTP服务是否正常:

# telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail00.cngnu.org ESMTP Postfix
QUIT
221 Bye
Connection closed by foreign host.

  使用如下命令测试postfix的SMTP的认证:

  PLAIN认证方式:

# printf ‘tester\0000tester\0000testpw’|mmencode

dGVzdGVyAHRlc3RlcgB0ZXN0cHc=



# telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail00.cngnu.org ESMTP Postfix

EHLO cngnu

250-mail00.cngnu.org

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250-XVERP

250 8BITMIME

AUTH PLAIN dGVzdGVyAHRlc3RlcgB0ZXN0cHc=

235 Authentication successful

QUIT

221 Bye

Connection closed by foreign host.

  LOGIN认证方式:

# printf ‘tester’ |mmencode

dGVzdGVy

# printf ‘testpw’ |mmencode

dGVzdHB3



# telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail00.cngnu.org ESMTP Postfix

EHLO cngnu

250-mail00.cngnu.org

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250-XVERP

250 8BITMIME

AUTH LOGIN

334 VXNlcm5hbWU6

dGVzdGVy

334 UGFzc3dvcmQ6

dGVzdHB3

235 Authentication successful

QUIT

221 Bye

Connection closed by foreign host.
9.2.3. 测试Cyrus-IMAP

  启动Cyrus-IMAP后,首先检查日志/var/log/messages、/var/log/imapd.log和/var/log/auth.log有无错误信息,然后检查进程,应该有如下进程存在:

# pstree |grep cyrusd



|-cyrusd



  接着检查端口,应该有如下端口打开:

# netstat -an |grep LISTEN



tcp  0  0 0.0.0.0:993  0.0.0.0:*  LISTEN

tcp  0  0 0.0.0.0:995  0.0.0.0:*  LISTEN

tcp  0  0 0.0.0.0:110  0.0.0.0:*  LISTEN

tcp  0  0 0.0.0.0:143  0.0.0.0:*  LISTEN



  再检测POP3和IMAP服务:

# telnet localhost 110

+OK mail00.cngnu.org Cyrus POP3 v2.0.16 server ready

USER tester

+OK Name is a valid mailbox

PASS testpw

+OK Maildrop locked and ready

QUIT

+OK

# imtest -m login -a tester localhost
C: C01 CAPABILITY
S: * OK mail.cngnu.org Cyrus IMAP4 v2.0.16 server ready
S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS ID NO_ATOMIC_RENAME UNSELECT MULTIAPPEND SORT THREAD=ORDEREDSUBJECT THREAD=REFERENCES IDLE
S: C01 OK Completed
Password:
C: L01 LOGIN tester {6}
+ go ahead
C: <omitted>
L01 OK User logged in
Authenticated.
Security strength factor: 0
. logout
* BYE LOGOUT received
. OK Completed



  现在创建邮箱。使用cyradm来创建和删除邮箱,它是Cyrus-IMAP自己带的交互式管理界面,现在的版本是用Perl写的。你也可以直接调用Cyrus::IMAP::Admin模块创建自己的CGI或脚本来做邮箱管理,可以参考Cyrus::IMAP::Shell模块的程序。

# cyradm -u cyrus localhost

IMAP Password: (cyrus)

mail00.cngnu.org> cm user.cyrus

mail00.cngnu.org> cm user.tester

mail00.cngnu.org> cm user.testdel

mail00.cngnu.org> lm

user.cyrus     user.tester     user.testdel

mail00.cngnu.org> sam user.testdel cyrus cd

mail00.cngnu.org> dm user.testdel

mail00.cngnu.org> lm

user.cyrus     user.tester

mail00.cngnu.org> quit

  如果要删除一个IMAP邮箱,需要先给管理员cyrus授予C(Create)和D(Delete)的权限才可以删除。
9.2.4. 邮件测试

  创建邮箱后,测试发信功能:

# mail tester

Subject: test by me

this is a test.

.

CC:

# mailq

Mail queue is empty

# tail /var/log/mail/*



  使用mailq来查看邮件队列是否有错误,并查看/var/log/mail/*是否有错误信息。如果一切正常,说明信件已经发送到tester了。

  测试收信,先测试POP3:

# telnet localhost 110

+OK mail00.cngnu.org Cyrus POP3 v2.0.16 server ready

USER tester

+OK Name is a valid mailbox

PASS testpw

+OK Maildrop locked and ready

LIST

1 400

TOP 1 10

Return-Path: <root@cngnu.org>
X-Sieve: cmu-sieve 2.0
Return-Path: <root@cngnu.org>
Received: by mail. (Postfix, from userid 0)
id 5F1EF90005; Mon, 20 May 2002 18:03:43 +0800 (CST)
To: tester@cngnu.org
Subject: test by me
Message-Id: <20020520100343.5F1EF90005@mail00.cngnu.org>
Date: Mon, 20 May 2002 18:03:43 +0800 (CST)
From: root@cngnu.org (root)

this is a test.

.

QUIT

+OK

  再测试IMAP:

# imtest -m login -a tester localhost
C: C01 CAPABILITY
S: * OK mail.cngnu.org Cyrus IMAP4 v2.0.16 server ready
S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS ID NO_ATOMIC_RENAME UNSELECT MULTIAPPEND SORT THREAD=ORDEREDSUBJECT THREAD=REFERENCES IDLE
S: C01 OK Completed
Password:
C: L01 LOGIN tester {6}
+ go ahead
C: <omitted>
L01 OK User logged in
Authenticated.
Security strength factor: 0

. select inbox
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
* 1 EXISTS
* 1 RECENT
* OK [UIDVALIDITY 1021736432]
* OK [UIDNEXT 3]
. OK [READ-WRITE] Completed

. fetch 1:1 (FLAGS BODY[HEADER.FIELDS (DATE FROM)])
* 1 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (DATE FROM)] {68}
Date: Mon, 20 May 2002 09:26:09 +0800 (CST)
From: wxy@cngnu.org

)
. OK Completed
. logout
* BYE LOGOUT received
. OK Completed

  你也可以使用任何其它的邮件客户端程序来测试,如kmail、Outlook Express等等。



  OK,到此为止,我们的邮件系统就架设完毕了。如果有任何问题,请到论坛http://www.cngnu.org/forum/讨论。
发表于 2004-8-1 11:18:54 | 显示全部楼层
这篇文章有些过时了,这里一篇不错:
http://www.fixdown.com/article/article/1549.htm
是关于用sasl2的。
别的方面大同小异。

王兴宇的原文没有编译安装cyrus-sasl2的部分,只是说AS3自带了。
不爽!很多人不用REDHAT AS3的,要自行编译cyrus-sals2.
上面链接的这篇文章看上去是对王兴宇原作的修改,虽也是基于redhat-8.0,但其它LINUX版本也可以。
发表于 2004-9-21 21:39:43 | 显示全部楼层
装完PostFix,为什么telnet localhost 25 的时候不能connect啊!
会是些什么原因呢?
发表于 2004-10-21 22:01:36 | 显示全部楼层
我的SMTP认证没有做出来啊
发表于 2004-10-22 20:09:53 | 显示全部楼层
大家帮帮我吧
发表于 2005-8-10 18:10:22 | 显示全部楼层
装完PostFix,为什么telnet localhost 25 的时候不能connect啊!
会是些什么原因呢?

我的也是,估计是25端口没打开,postfix已经运行,但25端口却不开
回复 支持 反对

使用道具 举报

发表于 2006-1-16 16:21:39 | 显示全部楼层
我根据这篇文章还有参考其他文章,装了4天,总算把环境搭建起来了
现在还没心情配置和研究、头大
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表