postfix(二)

 现在创建邮箱。

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

 

  对于非虚拟域邮箱,只需要创建同用户名相同的邮箱(邮件的本地部分)。

  对于虚拟域邮箱,为了将虚拟域用户区别开来,我们希望使用用户的邮件全称来做它的邮箱名(其POP3/IMAP的登录名和邮箱名是一样的),但是虽然 Cyrus-IMAP允许你创建带有“@”的邮箱,但是Cyrus-IMAP的deliver不支持邮件的本地部分带有“@”的邮箱,以至于不能正常递 交。我们采用了以下步骤来解决这个问题:

  1. 首先,在cyradm中创建两个邮箱,一个是邮件地址全称做邮箱名,我们称之为“地址邮箱”;一个通过将邮件地址其中的“@”换成了“~”做邮箱名,我们称之为“存储邮箱”。
  2. 然后,退出cyradm,在邮件分区的user目录下(这里是/var/spool/imap/user),找到刚才创建的邮箱。在文件系统中删除“地址邮箱”,并将“存储邮箱”做个符号链接,名字就是刚刚删除的“地址邮箱”。
  3. 最后,设置数据库中的FORWARD字段,使之将邮件投递到“存储邮箱”。

  之所以这样做的原因是,通过在cyradm中创建两个邮箱,通知了Cyrus-IMAP系统中存在“地址邮箱”,删除地址邮箱,并将其作为“存 储邮箱”的别名是希望通过它能访问到实际存储邮件的“存储邮箱”。(另外请注意,邮箱名称中的点实际在文件系统中是用“^”代表的)

 

[root@mail bin]# cyradm --user cyrus localhost

IMAP Password:

mail.cngnu.org> cm user/cyrus

mail.cngnu.org> sq user/cyrus STORAGE 10485760

mail.cngnu.org> cm user/trueuser

mail.cngnu.org> sq user/trueuser STORAGE 10485760

mail.cngnu.org> cm user/virtualuser~cngnu.org

mail.cngnu.org> cm user/[email protected]

mail.cngnu.org> sq user/virtualuser~cngnu.org STORAGE 10485760

mail.cngnu.org> lm

user/INBOX (\HasNoChildren)
user/trueuser (\HasNoChildren)
user/virtualuser~cngnu.org (\HasNoChildren)
user/[email protected] (\HasNoChildren)

mail.cngnu.org> quit

[root@mail bin]# cd /var/spool/imap/user

[root@mail user]# ls

cyrus     trueuser     virtualuser~cngnu^org    virtualuser@cngnu^org

[root@mail user]# rm -rf tester\@cngnu\^org

[root@mail user]# ln -s tester~cngnu^org tester@cngnu^org

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

[root@mail user]# cyradm --user cyrus localhost

IMAP Password:

mail.cngnu.org> cm user/testdel

mail.cngnu.org> lm

user/INBOX (\HasNoChildren)
user/testdel (\HasNoChildren)
user/trueuser (\HasNoChildren)
user/virtualuser~cngnu.org (\HasNoChildren)
user/[email protected] (\HasNoChildren)

mail.cngnu.org> sam user/testdel cyrus cd

mail.cngnu.org> dm user/testdel

mail.cngnu.org> lm

user/INBOX (\HasNoChildren)
user/testdel (\HasNoChildren)
user/trueuser (\HasNoChildren)
user/virtualuser~cngnu.org (\HasNoChildren)
user/[email protected] (\HasNoChildren)

mail.cngnu.org> quit

[root@mail user]# rm -rf testdel

 

  再检测POP3和IMAP服务:

[root@mail user]# telnet localhost 110

+OK mail.cngnu.org Cyrus POP3 v2.1.16 server ready

USER [email protected]

+OK Name is a valid mailbox

PASS testpw

+OK Maildrop locked and ready

QUIT

+OK

[root@mail bin]# imtest -m login -a [email protected] localhost
C: C01 CAPABILITY
S: * OK mail.cngnu.org Cyrus IMAP4 v2.1.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: testpw
C: L01 LOGIN [email protected] {6}
+ go ahead
C: <omitted>
L01 OK User logged in
Authenticated.
Security strength factor: 0
. logout
* BYE LOGOUT received
. OK Completed

 

9.  安装IMP

9.1.  下载

  http://www.horde.org/horde/

  http://www.horde.org/imp/3.2.2/

  http://www.horde.org/turba/

[root@mail user]# cd /usr/src

[root@mail src]# wget ftp://ftp.horde.org/pub/horde/horde-2.2.4.tar.gz

[root@mail src]# wget ftp://ftp.horde.org/pub/pear/pear-1.1.tar.gz

[root@mail src]# wget ftp://ftp.horde.org/pub/imp/imp-3.2.2.tar.gz

[root@mail src]# wget ftp://ftp.horde.org/pub/turba/turba-1.2.1.tar.gz

 

9.2.  配置Apache与PHP

  IMP对PHP的环境要求较高。所以通常需要升级PHP包,并安装由Horde定制后的PEAR包。

  修改/etc/php.ini,将register_globals功能打开。

register_globals = On

  安装PEAR包,在AS3中,它位于/usr/share/pear下:

[root@mail src]# tar zxf /usr/src/pear-1.1.tar.gz

[root@mail lib]# cd /usr/share

[root@mail lib]# /bin/cp -Rf /usr/src/pear/* pear

  最后重新启动Apache:

[root@mail lib]# /etc/rc.d/init.d/httpd restart

9.3.  配置Horde

  安装Horde:

[root@mail lib]# cd /var/www/html

[root@mail html]# tar zxf /usr/src/horde-2.2.4.tar.gz

[root@mail html]# mv horde-2.2.4 horde

[root@mail html]# cd horde/scripts/db

 

[root@mail db]# mysql < mysql_create.sql

 

[root@mail db]# cd ../../config

[root@mail config]# for foo in *.dist; do cp $foo `basename $foo .dist`;done

  然后修改config目录下面的horde.php。

[root@mail config]# vi horde.php

  修改162行:

$conf['prefs']['driver'] = 'none';

  为:

$conf['prefs']['driver'] = 'sql';

  修改171行至176行,将其注释去掉并写入horde数据库的口令:

// $conf['prefs']['params']['phptype'] = 'mysql';
// $conf['prefs']['params']['hostspec'] = 'localhost';
// $conf['prefs']['params']['username'] = 'horde';
// $conf['prefs']['params']['password'] = '*****';
// $conf['prefs']['params']['database'] = 'horde';
// $conf['prefs']['params']['table'] = 'horde_prefs';

  为:

$conf['prefs']['params']['phptype'] = 'mysql';
$conf['prefs']['params']['hostspec'] = 'localhost';
$conf['prefs']['params']['username'] = 'horde';
$conf['prefs']['params']['password'] = 'horde';
$conf['prefs']['params']['database'] = 'horde';
$conf['prefs']['params']['table'] = 'horde_prefs';

  这里我们没有修改horde数据库的默认的数据库设置,如果在实际使用中,至少应该取一个比较复杂的密码。

 

  再来修改config目录下面的registry.php。

[root@mail config]# vi registry.php

  修改23行至24行,将其注释去掉:

// $this->registry['auth']['login'] = 'imp';
// $this->registry['auth']['logout'] = 'imp';

  为:

$this->registry['auth']['login'] = 'imp';
$this->registry['auth']['logout'] = 'imp';

  然后修改119、138行激活IMP和Turba:

'status' => 'inactive'

  为:

'status' => 'active'

  最后在浏览器中访问如下URL测试Horde需要的环境是否满足:

http://你的邮件服务器的IP/horde/test.php

  如果发现有红色的提示,可能需要修改你的PHP的安装和配置(参见上一节),然后再重新测试。

9.4.  配置IMP

  安装IMP:

[root@mail config]# cd ..

[root@mail horde]# tar zxf /usr/src/imp-3.2.2.tar.gz

[root@mail horde]# mv imp-3.2.2 imp

[root@mail horde]# cd imp/config

[root@mail config]# for foo in *.dist; do cp $foo `basename $foo .dist`;done

  然后修改config目录里面的conf.php:

[root@mail config]# vi conf.php

  修改37行:

$conf['menu']['apps'] = array();

  为:

$conf['menu']['apps'] = array('turba');

  修改57行:

$conf['user']['allow_resume_all'] = false;

  为:

$conf['user']['allow_resume_all'] = true;

  修改63行:

$conf['user']['allow_resume_all_in_drafts'] = false;

  为:

$conf['user']['allow_resume_all_in_drafts'] = true;

 

  然后修改prefs.php:

[root@mail config]# vi prefs.php

  将自动维护功能关闭,修改426、427行:

'value' => 1,
'locked' => false,

  为:

'value' => 0,
'locked' => true,

  再注释773行:

'value' => '',

  为:

//'value' => '',

  取消注释774行:

// 'value' => 'localsql',

  为:

'value' => 'localsql',

 

  最后修改servers.php:

[root@mail config]# vi servers.php

  注释除“cyrus”服务器外的所有服务器配置,然后修改“cyrus”服务器的配置为:

$servers['cyrus'] = array(
'name' => 'Cyrus IMAP Server',
'server' => 'localhost',
'protocol' => 'imap/notls',
'port' => 143,
'folders' => '',
'namespace' => 'INBOX.',
'maildomain' => 'cngnu.org',
'realm' => 'cngnu.org',
'preferred' => ''
);

 

9.5.  配置Turba

  安装Turba:

[root@mail config]# cd ../..

[root@mail horde]# tar zxf /usr/src/turba-1.2.1.tar.gz

[root@mail horde]# mv turba-1.2.1 turba

[root@mail horde]# cd turba/config

[root@mail config]# for foo in *.dist; do cp $foo `basename $foo .dist`;done

  然后修改config目录里面的conf.php:

[root@mail config]# vi conf.php

  修改32行:

$conf['menu']['apps'] = array();

  为:

$conf['menu']['apps'] = array('imp');

  然后修改config目录里面的sources.php:

[root@mail config]# vi sources.php

  修改146行:

'password' => '*****';

  为:

'password' => 'horde';

  最后,添加turba数据库表:

[root@mail config]# cd ../scripts/drivers

[root@mail config]# mysql horde <turba.sql

 

9.6.  测试IMP

  最后在浏览器中访问如下URL:

http://你的邮件服务器的IP/horde/

  输入用户名[email protected]和密码testpw登录(或trueuser)。

10.  其他

10.1.  启动脚本

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

#!/bin/bash
#
# mailsys This shell script takes care of starting and stopping
# Postfix and Cyrus-IMAP.
# author : xingyu.wang <[email protected]> 2004/1/18
#
# 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 $"POP3 IMAP4 "
    /usr/cyrus/bin/cyrusd > /dev/null 2>&1 &

    RETVAL=$?

    if [ $RETVAL -eq 0 ]; then
        touch /var/lock/subsys/mailsys
        success $"$prog start" 
    else
        failure $"$prog start failure"
    fi

    echo
    return $RETVAL
}

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

    echo -n $"SMTP "
    /usr/sbin/postfix stop > /dev/null 2>&1 & 
 
    echo -n $"POP3 IMAP4 " 
    killproc cyrusd

    RETVAL=$?

    if [ $RETVAL -eq 0 ]; then
        rm -f /var/lock/subsys/mailsys
        success $"$prog stop"
    else
        failure $"$prog stop failure"
    fi

    echo
    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

 

[root@mail root]# chmod 755 /etc/rc.d/init.d/mailsys

[root@mail root]# chkconfig --level 0123456 mailsys on

[root@mail root]# chkconfig --level 0123456 sendmail off

10.2.  整体测试

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

[root@mail root]# mail [email protected]

Subject: test by me

this is a test.

.

CC:

[root@mail root]# mailq

Mail queue is empty

[root@mail root]# tail /var/log/maillog

 

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

  测试收信,先测试POP3:

[root@mail root]# telnet localhost 110

+OK mail.cngnu.org Cyrus POP3 v2.1.16 server ready

USER [email protected]

+OK Name is a valid mailbox

PASS testpw

+OK Maildrop locked and ready

LIST

1 400

TOP 1 10

Return-Path: <[email protected]>
X-Sieve: CMU sieve 2.2
Return-Path: <[email protected]>
Received: by mail. (Postfix, from userid 0)
id 5F1EF90005; Sat, 18 Jan 2004 02:16:43 +0800 (CST)
To: [email protected]
Subject: test by me
Message-Id: <[email protected]>
Date: Sat, 18 Jan 2004 02:16:43 +0800 (CST)
From: [email protected] (root)

this is a test.

.

QUIT

+OK

  再测试IMAP:

[root@mail root]# imtest -m login -a [email protected] localhost
C: C01 CAPABILITY
S: * OK mail.cngnu.org Cyrus IMAP4 v2.1.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 virtualuser {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: [email protected]

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

 

  最后测试IMP,在浏览器中访问如下URL:

http://你的邮件服务器的IP/horde/

  输入用户名[email protected]和密码testpw登录。

本文出自 “dsafsa_技术博客” 博客,转载请与作者联系!

你可能感兴趣的:(postfix,ExtMail,yourmail)