CNGNU Postfix¶l¥ó¨t²Î¨t¦C«ü«n¤§¤@

Postfix + Cyrus-IMAP + Cyrus-SASL + MySQL
§¹¥þ«ü«n


 

§@ªÌ¡G¤ý¿³¦t <wxy@cngnu.org>

ª©¥»¡G0.21

ª©Åv¡GGPL

µo§G¤é´Á¡G2002-8-13

 

¥Ø¿ý

1.  ·§­z

1.1.  ¥Øªº

1.2.  §ó·s¾ú¥v

1.3.  TODO

1.4.  »ïÁÂ

2.  ¨t²Î¥\¯à

3.  ¨t²Î°ò¥»«e´£

4.  ¦w¸ËMySQL

4.1.  ¤U¸ü

4.2.  ½sĶ»P¦w¸Ë

4.3.  °t¸m

5.  ¦w¸Ëpam_mysql

5.1.  ¤U¸ü

5.2.  ½sĶ»P¦w¸Ë

5.3.  °t¸m

6.  ¦w¸ËCyrus-SASL

6.1.  ¤U¸ü

6.2.  ½sĶ»P¦w¸Ë

6.3.  °t¸m

7.  ¦w¸ËPostfix

7.1.  ¤U¸ü

7.2.  ½sĶ»P¦w¸Ë

7.3.  °t¸m

8.  ¦w¸ËCyrus-IMAP

8.1.  ¤U¸ü

8.2.  ½sĶ»P¦w¸Ë

8.3.  °t¸m

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.  ´ú¸Õ¶l¥ó


1.  ·§­z

1.1.  ¥Øªº

’Â’Â¥»¤å¸Õ¹Ï¤¶²Ð¦p¦ó¦b¤@­ÓLinux¥­»O¤W¦w¸Ë¤@®M¥\¯à§¹¾ãªº¶l¥ó¨t²Î¡C³oùاڭ̥HPostfix°µSMTP¦øªA¾¹¡BCyrus-IMAP°µPOP3/IMAP4¦øªA¾¹¡B³q¹LCyrus-SASL¹ï¦sÀx¦bMySQL¸ê®Æ®w¤¤ªº¥Î¤á¶i¦æÅçÃÒ©M±ÂÅv¡C

’’³o­Ó¶l¥ó¨t²Îªº³]­p¥Ø¼Ð¬O´£¨Ñ¤@­Ó¥iÂX¥Rªº¡B¨ã³Æ¤j¦h¼Æ¥\¯àªº¶l¥ó¨t²Î¡C

’Â’Â¥»¤åªº³Ì·sª©¥»¥i¥H¦b³oùاä¨ì:

 

HTML

TEXT

²Å餤¤å

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

Postfix_I.html

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

Postfix_I.txt

ÁcÅ餤¤å

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

Postfix_I.tw.html

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

Postfix_I.tw.txt

 

’Â’Â¥»¤åªºª©Åv¿í´`GPL¡A¥i¥H¦b¤£§R°£ª©Åv¸ê°T©Mª`©ú­×§ïªº±¡ªp¤U¥ô·N¶Ç¼½¡C

1.2.  §ó·s¾ú¥v

1.3.  TODO

1.4.  »ïÁÂ

’Â’ÂÁÂÁÂlesson.wardªº«ü¥¿¡C

2.  ¨t²Î¥\¯à

’’¨t²ÎÅÞ¿èµ²ºc¡G

 
+---------------------------------------------------------------------------------------+
|                                                                                       |
|      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.  ¨t²Î°ò¥»«e´£

’Â’Â¥»¤å¥HLinux¨t²Î¬°¥Ø¼Ð¥­»O¡A¤ä´©¦h¼ÆªºLinux¥­»O¦pRedHat 7.x¡BMandrake 8.xµ¥¡A²z½×¤W¤]·|¤ä´©¨ä¥LªºLinuxµo¦æª©¡A¬Æ¦Ü¨ä¥LªºUNIX¨t²Î¡C

’’³oùØ¥HMandrake 8.2¬°»¡©ú¥­»O¡C

’’¸Өt²Î°£¤F°ò¥»ªº§@·~¨t²Î³¡¤À¥~¡AÁٻݭn½T»{¨t²Î¤¤¦w¸Ë¦p¤UªºRPM¡G

’’¤@¡Bgcc:

’Â’Â’Â’Â1.  libgcc3.0-3.0.4-2mdk

’Â’Â’Â’Â2.  gcc-2.96-0.76mdk

’Â’Â’Â’Â3.  gcc-c++-2.96-0.76mdk

’Â’Â’Â’Â4.  gcc-cpp-2.96-0.76mdk

’’¤G¡Bdb3:

’Â’Â’Â’Â1.  libdb3.3-devel-3.3.11-7mdk

’Â’Â’Â’Â2.  libdb3.3-3.3.11-7mdk

’Â’Â’Â’Â3.  db3-utils-3.3.11-7mdk

’’¤T¡Bpam:

’Â’Â’Â’Â1.  pam-0.75-20mdk

’Â’Â’Â’Â2.  pam-devel-0.75-20mdk

’Â’Â¥|¡Bapache¡]¶È¦b»Ý­nSqWebmail®É¡^

’Â’Â’Â’Â1.  apache-conf-1.3.23-4mdk

’Â’Â’Â’Â2.  apache-1.3.23-4mdk

’Â’Â’Â’Â3.  apache-common-1.3.23-4mdk

’Â’Â’Â’Â4.  apache-modules-1.3.23-4mdk

’’°£¦¹¤§¥~¡A¨ä¥L»Ý­nªº³¡¤À¥H·½½X¤è¦¡½sĶ¡C

4.  ¦w¸ËMySQL

4.1.  ¤U¸ü

’Â’Âhttp://www.mysql.com/downloads/

’Â’Âwget http://www2.linuxforum.net/mirror/mysql/Downloads/MySQL-3.23/mysql-3.23.49.tar.gz

4.2.  ½sĶ»P¦w¸Ë

’’½sĶMySQL¡G

# cd /usr/src

# tar -xvzf mysql-3.23.49.tar.gz

# cd mysql-3.23.49

 

# ./configure --prefix=/usr/local/mysql --enable-assembler --with-innodb

 

# make

# make install

’’ªì©l¤Æ¸ê®Æ®w¡G

# /usr/local/mysql/bin/mysql_install_db

’’¦w¸Ë¤Þ¾É¸}¥»¡G

# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld

# cd /etc/rc.d/rc3.d

# ln -s ../init.d/mysqld S90mysql

# ln -s ../init.d/mysqld K90mysql

 

’’¸ü¤Jµ{¦¡®w¡G

# ln -s /usr/local/mysql/include/mysql /usr/include/mysql

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

 

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

# ldconfig

 

’’¬°¤F´£°ª¦w¥þ©Ê¡A¦b¨t²Î¤¤²K¥[¤@­Ó¡§mysql¡¨¥Î¤á¡A¨Ã±NMySQL¸ê®Æ®w¥Ø¿ýªºÄÝ¥D³]¬°¡§mysql¡¨¡G

# useradd ¡Vd/usr/local/mysql mysql

# chown ¡VR mysql /var/lib/mysql

’’µM«á¡A­×§ï/etc/init.d/mysqld¡A¨Ï¨ä¥uºÊÅ¥localhostªº°ð¡A±N¦p¤Uªº¤@¦æ

$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file&

’’­קאּ¡G

$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file --bind-address=127.0.0.1&

 

’’µM«á±Ò°ÊMySQL¡G

# /etc/init.d/mysql start

4.3.  °t¸m

’’³ЫØMySQLªº¶l¥ó¥Î¤á¸ê®Æ®w¡A¨Ã²K¥[¤@­ÓºÞ²z¥Î¤á¡§cyrus¡¨©M¤@­Ó´ú¸Õ¥Î¤á¡§tester¡¨¡G

# PATH=¡¨$PATH¡¨:/usr/local/mysql/bin;export PATH

# 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

’Â’Â-> (¡¥cyrus¡¦,¡¦cyrus¡¦,¡¦cyrus¡¦,1);

 

mysql> INSERT INTO user VALUES

’Â’Â-> (¡¥tester¡¦,¡¦testpw¡¦,¡¦tester¡¦,1);

 

mysql> \q

 

’’¤@¨Ç³nÅé¹ïmysqlªº¥»¦a³s±µ¨Ï¥Îªº¥t¥~¤@­Ó¦ì¸mªºsock¤J¤f¡A°µ­Ó³n³s±µ¡G

# ln ¡Vs /tmp/mysql.sock /var/lib/mysql/mysql.sock

5.  ¦w¸Ëpam_mysql

5.1.  ¤U¸ü

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

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

5.2.  ½sĶ»P¦w¸Ë

’’½sĶpam_mysql¡G

# tar -xvzf pam_mysql-0.4.7.tar.gz

# cd pam_mysql

# make

# cp pam_mysql.so /lib/security

5.3.  °t¸m

’’³ЫØ/etc/pam.d/imap¡A¥¦¥Î¨Ó¤ä«ùCyrus-IMAPªºimap»{ÃÒ¡G

# 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

’’¦P¼Ë³Ð«Ø/etc/pam.d/pop ¡A¥¦¥Î¨Ó¤ä«ùCyrus-IMAPªºpop3»{ÃÒ¡G

# cd /etc/pam.d

# ln ¡Vs imap pop

’’¦P¼Ë³Ð«Ø/etc/pam.d/smtp ¡A¥¦¥Î¨Ó¤ä«ùPostfixªºsmtp auth»{ÃÒ¡G

# cd /etc/pam.d

# ln -s imap smtp

 

6.  ¦w¸ËCyrus-SASL

6.1.  ¤U¸ü

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

’Â’Âwget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-1.5.27.tar.gz

6.2.  ½sĶ»P¦w¸Ë

’’½sĶCyrus-sasl¡A¥u¤ä´©»Ý­nªºplain©Mlogin»{ÃҤ覡¡G

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

cd cyrus-sasl-1.5.27

# ./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

 

’’¸ü¤Jµ{¦¡®w¡G

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

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

# ldconfig

 

’’ª`·N¡A³oùبϥΪº¬OSASL V1¡A¥Ø«eSASL V2©MPostfix°t¦X¤W¥i¯àÁÙ¦³°ÝÃD¡C

6.3.  °t¸m

’’³]¸mPostfix¨Ï¥ÎSASL¨Ó¤ä´©smtp auth»{ÃÒ¡G

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

  ’Â’ÂCyrus-IMAPªºSASL°t¸m¤£¨Ï¥Î¼Ð·Çªºsasl»yªk¡A¥¦ªº°t¸mÀÉ©ñ¦b/etc/imapd.conf¤¤¡A¸Ô²Ó°t¸m¦bCyrus-IMAP³¡¤À»¡©ú¡C

7.  ¦w¸ËPostfix

7.1.  ¤U¸ü

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

’Â’Âwget http://postfix.energybeam.com/source/official/postfix-1.1.7.tar.gz

7.2.  ½sĶ»P¦w¸Ë

’’¦pªG§Aªº¨t²Î¤W­ì¨Ó¦³sendmail¡A¥ý±N¨ä°±¤î¨Ã±N¨äÀɧï¦W¡G

# /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

’’µM«á²K¥[¨â­Ó²Õ¡Gpostfix©Mmaildrop©M¤@­Ó¥Î¤á¡Gpostfix

# groupadd ¡Vg 12345 postfix

# groupadd -g 54321 postdrop

# useradd ¡Vu 12345 ¡Vg 12345 -d/dev/null -s/bin/false postfix

’’³oùتº²Õ©M¥Î¤áªºID¬O¨t²Î¤¤¥¼¨Ï¥ÎªºID¡C

’’½sĶPostfix¡A¨Ã¤ä«ùmysql©Msasl¡G

# tar -xvzf postfix-1.1.7.tar.gz

# cd postfix-1.1.7

 

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

'AUXLIBS=-L/usr/lib/mysql -lmysqlclient ¡Vlsasl -lz -lm'

# make install

’’¦w¸Ë®É¡A¦w¸Ëµ{¦¡·|´£°Ý¤@¨Ç°ÝÃD¡A¥i¥Hª½±µ«ö¦^¨®±Ä¥Î¹w³]­È¡C

 

’’±N¥Î¤ápostfix²K¥[¨ì/etc/aliases¤¤¡G

# echo ¡¥postfix: root¡¦ >> /etc/aliases

 

7.3.  °t¸m

’’­קï/etc/postfix/master.cf¤¤ªºcyrusªº°t¸m¡A±N¦p¤U¤@¦æ¡G

flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}

’’­קאּ¡G

flags=R user=cyrus argv=/usr/local/cyrus/bin/deliver ¡Vr ${sender} -m ${extension} ${user}

 

’’­קï/etc/postfix/main.cfªº°t¸m¡G

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¡A¥¦´£¨Ñ¤F¥»¦a¥Î¤á©M¶l¥óÂàµo¥\¯à¡CforwardÄæ¦ì©MusernameÄæ¦ì­ÈÀq»{¬O¬Û¦Pªº¡A¦¹®É¶l¥ó¥»¦a»¼¥æ¨ì¥Î¤á¶l½c¡GusernameùØ­±¡Fforward¬O¥t¥~¤@­Ó¶l¥ó¦ì§}©Î¥Î¤á®É¡A¶l¥óÂàµo¨ì·sªº¦ì§}¡C¦¹¥~¡A¥Ñ©óPostfix¹ï©ó¶l½c°Ï§O¤j¤p¼g¡A³q¹Lvirtual¥\¯àªº­«¼g¡A¥i¥H«OÃÒ¤j¤p¼gªº¶l¥ó¦ì§}³£¥i¥H¥¿½T±µ¦¬¡C

#

# 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'

8.  ¦w¸ËCyrus-IMAP

8.1.  ¤U¸ü

’Â’Â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.  ½sĶ»P¦w¸Ë

’’½sĶCyrus-IMAP¡A¨Ã¨ú®økerberos¤ä«ù¡]¦bRedhat¤¤¡Akerberos®w¦³°ÝÃD¡A«ÜÃø½sͳq¹L¡AMandrake«h¥i¥H³q¹L¡F¦¹¥~¡A§Ú­Ì¤]¤£»Ý­nkerberosªº¤ä´©¡^¡G

# 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 --without-krb ¡V-with-auth=unix

 

# make depend

# make all CFLAGS=-O

# make install

  ’’¥ѩóCyrus-IMAPªº¥D±±¶iµ{©MPostfixªº¥D±±¶iµ{¦W¦r¤@¼Ë¡A®e©ö²V²c¦Ó¥B¤£¤è«K±±¨î¡A©Ò¥H±NCyrus-IMAP¦øªA¾¹ªº¥D±±¶iµ{°µ­Ó§O¦W³s±µ¡Gcyrusd¡C

# cd /usr/local/cyrus/bin

# ln ¡Vs master cyrusd

’Â’ÂCyrus-IMAPªº¦w¸Ë¸}¥»¦³°ÝÃD¡A¨S¦³¦w¸Ëcyradm¡]²{¦b¨Ï¥Îªº¬Operlª©¥»¡A­ì¨Óªºtclª©¥»¤£¦A¤ä´©¡^©Ò»Ý­nªºperl¼Ò²Õ¡A¤â¤u¦w¸Ë¡G

# cd -

# cd perl/imap

# make install

’’«إßCyrus-IMAP¦øªA¾¹ªº¥Ø¿ýµ²ºc¡G

# useradd -g mail cyrus

 

# mkdir ¡Vp /var/imap/sieve

# mkdir /var/spool/imap

 

# chown ¡VR cyrus:mail /var/imap

# chown ¡VR cyrus:mail /var/spool/imap

 

# su cyrus

$ tools/mkimap

$ exit

  ’’«إߥD°t¸mÀÉ/etc/cyrus.conf¡G

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

’’³ЫØIMAP°t¸mÀÉ/etc/imapd.conf¡AºÞ²z­û¬Ocyrus¡G

configdirectory: /var/imap

partition-default: /var/spool/imap

admins: cyrus

sasl_pwcheck_method: pam

’’³Ыؤé»x¡G

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

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

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

 

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

’’³]¸m¶l¥ó­­ÃB¡G

# cd /var/imap

# chattr +S user quota user/* quota/*

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

8.3.  °t¸m

9.  ´ú¸Õ

9.1.  ±Ò°Ê

9.1.1.  ±Ò°ÊMySQL

’Â’ÂMySQL¦b«e­±°t¸mªº®É­Ô¤w¸g±Ò°Ê¡C

’’±ҰʩR¥O¦p¤U¡G

# /etc/init.d/mysqld start

9.1.2.  ±Ò°ÊPostfix

’’±ҰʩR¥O¦p¤U¡G

# /usr/sbin/postfix start

’’©ΡG

# /etc/rc.d/init.d/sendmail start

9.1.3.  ±Ò°ÊCyrus-IMAP

’’±ҰʩR¥O¦p¤U¡G

# /usr/local/cyrus/bin/cyrusd&

9.1.4. ±Ò°Ê¸}¥»

’Â’Â¥i¥H½s¼g¤@­Ó±Ò°Ê¸}¥»mailsystem¨Ó±Ò°Ê³o¨Ç¶iµ{¡G

#!/bin/bash
#
# mailsystem 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: mailsystem
# pidfile: /var/run/mailsystem.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/local/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/local/cyrus/bin/cyrusd > /dev/null 2&>1 &

RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mailsystem
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 `pidof cyrusd`
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mailsystem
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.  ´ú¸Õ

’¬°¤F²M·¡°_¨£¡A¥H¤U¿é¤Jªº©R¥O¥Î¬õ¦â¦rÅé¼Ð¥Ü¡A¨t²ÎÅã¥Ü¸ê°T¥Î¶Â¦â¦rÅé¼Ð¥Ü¡C

9.2.1.  ´ú¸ÕMySQL

’’±ҰÊMySQL«á¡A­º¥ýÀˬd¤é»x/var/log/messages¦³µL¿ù»~¸ê°T¡AµM«áÀˬd¶iµ{¡AÀ³¸Ó¦³¦p¤U¶iµ{¦s¦b¡G

# pstree | grep safe-mysqld

 

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

 

’’±µµÛÀˬd°ð¡AÀ³¸Ó¦³¦p¤U°ð¥´¶}¡G

# netstat -an | grep LISTEN

 

tcp’Â’Â0’Â’Â0 127.0.0.1:3306’Â’Â0.0.0.0:*’Â’ÂLISTEN

’’¦A¨Ï¥Î¦p¤U©R¥O´ú¸ÕMySQL¡G

# mysql mail -u mail ¡Vp

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 |
+----------+----------+----------------------------+--------+
| cyrus    | cyrus    | cyrus                      | 1      |
+----------+----------+----------------------------+--------+
| tester   | testpw   | tester                     | 1      |
+----------+----------+----------------------------+--------+

1 rows in set (0.00 sec)

mysql> \q

Bye

 

9.2.2.  ´ú¸ÕPostfix

’’±ҰÊPostfix«á¡A­º¥ýÀˬd¤é»x/var/log/messages¦³µL¿ù»~¸ê°T¡AµM«áÀˬd¶iµ{¡AÀ³¸Ó¦³¦p¤U¶iµ{¦s¦b¡GÀˬd°ð¤Î¶iµ{¡G

# pstree |grep master

 

|-master-+-pickup

 

’’±µµÛÀˬd°ð¡AÀ³¸Ó¦³¦p¤U°ð¥´¶}¡G

# netstat -an |grep LISTEN

 

tcp’Â’Â0’Â’Â0 0.0.0.0:25’Â’Â0.0.0.0:*’Â’ÂLISTEN

 

’’¦AÀË´úSMTPªA°È¬O§_¥¿±`¡G

# 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.

’’¨ϥΦp¤U©R¥O´ú¸ÕpostfixªºSMTPªº»{ÃÒ¡G

’Â’ÂPLAIN»{ÃҤ覡¡G

# 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»{ÃҤ覡¡G

# 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«á¡A­º¥ýÀˬd¤é»x/var/log/messages¡B/var/log/imapd.log©M/var/log/auth.log¦³µL¿ù»~¸ê°T¡AµM«áÀˬd¶iµ{¡AÀ³¸Ó¦³¦p¤U¶iµ{¦s¦b¡G

# pstree |grep cyrusd

 

|-cyrusd

 

’’±µµÛÀˬd°ð¡AÀ³¸Ó¦³¦p¤U°ð¥´¶}¡G

# 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

 

’’¦AÀË´úPOP3©MIMAPªA°È¡G

# 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

 

’’²{¦b³Ð«Ø¶l½c¡C¨Ï¥Îcyradm¨Ó³Ð«Ø¶l½c¡A¥¦¬OCyrus-IMAP¦Û¤v±aªº¤¬°Ê¦¡ºÞ²z¤¶­±¡A²{¦bªºª©¥»¬O¥ÎPerl¼gªº¡C§A¤]¥i¥Hª½±µ½Õ¥ÎCyrus::IMAP::Admin¼Ò²Õ³Ð«Ø¦Û¤vªºCGI©Î¸}¥»¨Ó°µ¶l½cºÞ²z¡A¥i¥H°Ñ¦ÒCyrus::IMAP::Shell¼Ò²Õªºµ{¦¡¡C

# cyradm -u cyrus localhost

IMAP Password: (cyrus)

mail00.cngnu.org> cm user.cyrus

mail00.cngnu.org> cm user.tester

mail00.cngnu.org> lm

user.cyrus ’Â’Â’Â’Âuser.tester

mail00.cngnu.org> quit

 

9.2.4. ¶l¥ó´ú¸Õ

’’³Ыضl½c«á¡A´ú¸Õµo«H¥\¯à¡G

# mail tester

Subject: test by me

this is a test.

.

CC:

# mailq

Mail queue is empty

# tail /var/log/mail/*

 

’’¨ϥÎmailq¨Ó¬d¬Ý¶l¥ó¦î¦C¬O§_¦³¿ù»~¡A¨Ã¬d¬Ý/var/log/mail/*¬O§_¦³¿ù»~¸ê°T¡C¦pªG¤@¤Á¥¿±`¡A»¡©ú«H¥ó¤w¸gµo°e¨ìtester¤F¡C

’’´ú¸Õ¦¬«H¡A¥ý´ú¸ÕPOP3¡G

# 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

’’¦A´ú¸ÕIMAP¡G

# 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
Passwor