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

由 kanaka 在 11-07-2002 13:29 发表:

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

非常好的文章!

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

CNGNU Postfix邮件系统系列指南之一

Postfix + Cyrus-IMAP + Cyrus-SASL + MySQL

完全指南

作者:王兴宇

   1<[email protected]>   
   2  
   3  
   4  
   5版本:0.30   
   6  
   7  
   8  
   9版权:GPL   
  10  
  11  
  12  
  13发布日期:2002-9-12   
  14  
  15  
  16  
  17  
  18  
  19目录   
  20  
  21  
  22  
  231\. 概述   
  24  
  25  
  26  
  271.1. 目的   
  28  
  29  
  30  
  311.2. 更新历史   
  32  
  33  
  34  
  351.3. TODO   
  36  
  37  
  38  
  391.4. 鸣谢   
  40  
  41  
  42  
  432\. 系统功能   
  44  
  45  
  46  
  473\. 系统基本前提   
  48  
  49  
  50  
  514\. 配置MySQL   
  52  
  53  
  54  
  554.1. 配置   
  56  
  57  
  58  
  595\. 安装pam_mysql   
  60  
  61  
  62  
  635.1. 下载   
  64  
  65  
  66  
  675.2. 编译与安装   
  68  
  69  
  70  
  715.3. 配置   
  72  
  73  
  74  
  756\. 安装Cyrus-SASL   
  76  
  77  
  78  
  796.1. 下载   
  80  
  81  
  82  
  836.2. 编译与安装   
  84  
  85  
  86  
  876.3. 配置   
  88  
  89  
  90  
  917\. 安装Postfix   
  92  
  93  
  94  
  957.1. 下载   
  96  
  97  
  98  
  997.2. 编译与安装   
 100  
 101  
 102  
 1037.3. 配置   
 104  
 105  
 106  
 1078\. 安装Cyrus-IMAP   
 108  
 109  
 110  
 1118.1. 下载   
 112  
 113  
 114  
 1158.2. 编译与安装   
 116  
 117  
 118  
 1198.3. 配置   
 120  
 121  
 122  
 1239\. 测试   
 124  
 125  
 126  
 1279.1. 启动   
 128  
 129  
 130  
 1319.1.1. 启动MySQL   
 132  
 133  
 134  
 1359.1.2. 启动Postfix   
 136  
 137  
 138  
 1399.1.3. 启动Cyrus-IMAP   
 140  
 141  
 142  
 1439.1.4. 启动脚本   
 144  
 145  
 146  
 1479.2. 测试   
 148  
 149  
 150  
 1519.2.1. 测试MySQL   
 152  
 153  
 154  
 1559.2.2. 测试Postfix   
 156  
 157  
 158  
 1599.2.3. 测试Cyrus-IMAP   
 160  
 161  
 162  
 1639.2.4. 测试邮件   
 164  
 1651\. 概述   
 166  
 1671.1. 目的   
 168  
 169  
 170  
 171本文试图介绍如何在一个Linux平台上安装一套功能完整的邮件系统。这里我们以Postfix做SMTP服务器、Cyrus-IMAP做POP3/IMAP4服务器、通过Cyrus-SASL对存储在MySQL数据库中的用户进行验证和授权。   
 172  
 173  
 174  
 175这个邮件系统的设计目标是提供一个可扩充的、具备大多数功能的邮件系统。   
 176  
 177  
 178  
 179本文的最新版本可以在这里找到:   
 180  
 181格式 URL   
 182  
 183简体中文/HTML http://www.cngnu.org/technology/Postfix_I.html   
 184  
 185繁体中文/HTML http://www.cngnu.org/technology/Postfix_I.tw.html   
 186  
 187简体中文/TEXT http://www.cngnu.org/technology/Postfix_I.txt   
 188  
 189繁体中文/TEXT http://www.cngnu.org/technology/Postfix_I.tw.txt   
 190  
 191  
 192  
 193有关本文所涉及的技术问题,请到http://www.cngnu.org/forum/的linux版讨论,我会尽快回复的。   
 194  
 195  
 196  
 197本文的版权遵循GPL,可以在不删除版权信息和注明修改的情况下任意传播。   
 198  
 1991.2. 更新历史   
 200  
 201  
 202  
 203* 2002-5-21 第一次发布,版本0.20。   
 204  
 205* 2002-8-13 修正一些错误,版本0.21。   
 206  
 207* 2002-8-23 修正一些错误,版本0.22。   
 208  
 209* 2002-9-12 在RedHat Linux Advance Server V2.1上进行了测试,修正了一些错误,版本0.30。   
 210  
 211  
 212  
 2131.3. TODO   
 214  
 215  
 216  
 217* 增加Courier-IMAP部分的内容   
 218  
 219* 增加SqWebmail部分的内容   
 220  
 221* 增加SSL部分的内容   
 222  
 223  
 224  
 2251.4. 鸣谢   
 226  
 227  
 228  
 229谢谢lesson.ward、Yunping Zhu的指正。   
 230  
 231  
 232  
 233  
 234  
 235  
 236  
 237参考文档:http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/index.html   
 238  
 2392\. 系统功能   
 240  
 241  
 242  
 243系统逻辑结构:   
 244  
 245  
 246  
 247  
 248  
 249+-----------------------------------------------------------------------+   
 250  
 251| |   
 252  
 253| 25/25 25/25 110/993 143/995 80/443 110/993 143/995 |   
 254  
 255| Incoming Outgoing POP3 IMAP WEB-MAIL POP3 IMAP |   
 256  
 257| /\ /\ /\ /\ /\ /\ /\ |   
 258  
 259| || || || || || || || |   
 260  
 261| \/ \/ \/ \/ \/ \/ \/ |   
 262  
 263+-------------------+---------------+---------------+-------------------+   
 264  
 265| Postfix | | SqWebmail | |   
 266  
 267| | +-------+-------+ |   
 268  
 269| | Cyrus-IMAP | Courier-IMAP |   
 270  
 271| +-----------+-----------------------+---------------------------+   
 272  
 273| | Cyrus-IMAP |   
 274  
 275| +---------------------------------------------------------------+   
 276  
 277| | PAM |   
 278  
 279| +---------------------------------------------------------------+   
 280  
 281| | pam_mysql |   
 282  
 283+-------+---------------------------------------------------------------+   
 284  
 285| MySQL |   
 286  
 287+-----------------------------------------------------------------------+   
 288  
 289  
 290  
 2913\. 系统基本前提   
 292  
 293  
 294  
 295本文以Linux系统为目标平台,支持多数的Linux平台如RedHat 7.x、Mandrake 8.x等,理论上也会支持其他的Linux发行版,甚至其他的UNIX系统。   
 296  
 297  
 298  
 299这里以RedHat Linux Advance Server V2.1(该系统与RedHat V7.3基本相同)为说明平台。   
 300  
 301  
 302  
 303该说明平台除了基本的操作系统部分外,系统中还安装了如下的RPM:   
 304  
 305  
 306  
 307一、gcc:   
 308  
 309  
 310  
 3111\. gcc-2.96-108.1   
 312  
 313  
 314  
 3152\. gcc-c++-2.96-108.1   
 316  
 317  
 318  
 319二、db3:   
 320  
 321  
 322  
 3231\. db3.3-devel-3.3.11.5   
 324  
 325  
 326  
 3272\. db3.3-3.3.11-5   
 328  
 329  
 330  
 3313\. db3-utils-3.3.11-5   
 332  
 333  
 334  
 335三、pam:   
 336  
 337  
 338  
 3391\. pam-0.75-29   
 340  
 341  
 342  
 3432\. pam-devel-0.75-29   
 344  
 345  
 346  
 347四、mysql:   
 348  
 349  
 350  
 3511\. mysqlclient9-3.23.22-6   
 352  
 353  
 354  
 3552\. mysql-3.23.41-1   
 356  
 357  
 358  
 3593\. mysql-server-3.23.41-1   
 360  
 361  
 362  
 3634\. mysql-devel-3.23.41-1   
 364  
 365  
 366  
 367如果系统中没有,请自行安装RPM包或编译安装。除此之外,其他需要的部分将以源码方式编译。   
 368  
 3694\. 配置MySQL   
 370  
 3714.1. 配置   
 372  
 373  
 374  
 375MySQL安装配置好以后,在MySQL中创建邮件用户数据库,并添加一个测试用户“tester”:   
 376  
 377  
 378  
 379# mysql mysql   
 380  
 381  
 382  
 383mysql&gt; CREATE DATABASE mail;   
 384  
 385  
 386  
 387mysql&gt; GRANT ALL ON mail.* TO mail@localhost   
 388  
 389  
 390  
 391-&gt; IDENTIFIED BY "secret";   
 392  
 393  
 394  
 395mysql&gt; FLUSH PRIVILEGES;   
 396  
 397  
 398  
 399mysql&gt; USE mail;   
 400  
 401  
 402  
 403mysql&gt; CREATE TABLE user (   
 404  
 405  
 406  
 407-&gt; username varchar(32) NOT NULL default '',   
 408  
 409  
 410  
 411-&gt; password varchar(32) binary NOT NULL default '',   
 412  
 413  
 414  
 415-&gt; forward varchar(128) NOT NULL default '',   
 416  
 417  
 418  
 419-&gt; status int(11) NOT NULL default '1',   
 420  
 421  
 422  
 423-&gt; UNIQUE KEY username (username)   
 424  
 425  
 426  
 427-&gt; );   
 428  
 429  
 430  
 431  
 432  
 433  
 434  
 435mysql&gt; INSERT INTO user VALUES   
 436  
 437  
 438  
 439-&gt; ('tester','testpw','tester',1);   
 440  
 441  
 442  
 443  
 444  
 445  
 446  
 447mysql&gt; \q   
 448  
 449  
 450  
 451上面的mail数据库的user表用来保存用户信息:   
 452  
 453  
 454  
 455* username和password字段就是用户名和明文密码。   
 456  
 457* forward字段默认情况下与username一样,在此情况下,邮件递交到本地邮箱(由于Postfix区分邮箱的大小写,所以通过这样的一个转发,正好可以消除大小写的区别);如果forward字段是另外一个用户名或者邮件地址,则该邮件被转发到别的用户或其它邮件地址。   
 458  
 459* status字段用来指示该用户是否有效,可以通过修改该值为0来禁止某个用户。   
 460  
 461  
 462  
 463一些软件对mysql的本地连接使用的另外一个位置的sock入口,做个软连接:   
 464  
 465  
 466  
 467# ln –s /tmp/mysql.sock /var/lib/mysql/mysql.sock   
 468  
 4695\. 安装pam_mysql   
 470  
 4715.1. 下载   
 472  
 473  
 474  
 475http://sourceforge.net/projects/pam-mysql/   
 476  
 477  
 478  
 479wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.4.7.tar.gz   
 480  
 481  
 482  
 483注:如果不能访问该网站取得pam_mysql,请自行使用代理服务器访问。   
 484  
 4855.2. 编译与安装   
 486  
 487  
 488  
 489编译pam_mysql:   
 490  
 491  
 492  
 493# tar -xvzf pam_mysql-0.4.7.tar.gz   
 494  
 495  
 496  
 497# cd pam_mysql   
 498  
 499  
 500  
 501# make   
 502  
 503  
 504  
 505# cp pam_mysql.so /lib/security   
 506  
 507  
 508  
 509有些情况下,这个编译会报错,但是编译出来的模块还是可以用的。   
 510  
 5115.3. 配置   
 512  
 513  
 514  
 515创建/etc/pam.d/imap,它用来支持Cyrus-IMAP的imap认证:   
 516  
 517  
 518  
 519# echo auth sufficient pam_unix_auth.so &gt;&gt; /etc/pam.d/imap   
 520  
 521# echo account sufficient pam_unix_acct.so &gt;&gt; /etc/pam.d/imap   
 522  
 523  
 524  
 525# echo auth sufficient pam_mysql.so user=mail passwd=secret host=localhost db=mail table=user \   
 526  
 527  
 528  
 529usercolumn=username passwdcolumn=password crypt=0 &gt;&gt; /etc/pam.d/imap   
 530  
 531  
 532  
 533# echo account required pam_mysql.so user=mail passwd=secret host=localhost db=mail table=user \   
 534  
 535  
 536  
 537usercolumn=username passwdcolumn=password crypt=0 &gt;&gt; /etc/pam.d/imap   
 538  
 539  
 540  
 541这里前面两行指是通过UNIX的基本方式认证用户(即系统用户),后面两行是指通过mysql数据库来认证用户。这里我们之所以保留UNIX系统认证模式,是因为我们下面要通过系统用户cyrus来管理cyrus-imap邮箱。不过你也可以选择将这个管理帐号cyrus放入mysql认证数据库里面,只需要你在上面的数据库里面添加一个cyrus用户。   
 542  
 543  
 544  
 545  
 546  
 547  
 548  
 549同样创建/etc/pam.d/pop ,它用来支持Cyrus-IMAP的pop3认证:   
 550  
 551  
 552  
 553# cd /etc/pam.d   
 554  
 555  
 556  
 557# ln –s imap pop   
 558  
 559  
 560  
 561同样创建/etc/pam.d/smtp ,它用来支持Postfix的smtp auth认证:   
 562  
 563  
 564  
 565# cd /etc/pam.d   
 566  
 567  
 568  
 569# ln -s imap smtp   
 570  
 571  
 572  
 573系统上可能已经存在了一个/etc/pam.d/smtp文件,请将原来的改名或者删除。   
 574  
 5756\. 安装Cyrus-SASL   
 576  
 5776.1. 下载   
 578  
 579  
 580  
 581http://asg.web.cmu.edu/cyrus/download/   
 582  
 583  
 584  
 585wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-1.5.28.tar.gz   
 586  
 5876.2. 编译与安装   
 588  
 589  
 590  
 591编译Cyrus-sasl,只支持需要的plain和login认证方式:   
 592  
 593  
 594  
 595# tar -zxvf cyrus-sasl-1.5.28.tar.gz   
 596  
 597  
 598  
 599# cd cyrus-sasl-1.5.28   
 600  
 601  
 602  
 603# ./configure --disable-sample --disable-saslauthd --disable-pwcheck --disable-cram --disable-digest \   
 604  
 605  
 606  
 607\--disable-krb4 --disable-gssapi --disable-anon --enable-plain --enable-login   
 608  
 609  
 610  
 611  
 612  
 613  
 614  
 615# make   
 616  
 617  
 618  
 619# make install   
 620  
 621  
 622  
 623  
 624  
 625  
 626  
 627# ln -s /usr/local/lib/sasl /usr/lib/sasl   
 628  
 629  
 630  
 631系统上如果已经安装了SASL,请先删除这些RPM或/usr/lib/sasl这个目录。   
 632  
 633  
 634  
 635  
 636  
 637  
 638  
 639加载链接库:   
 640  
 641  
 642  
 643# echo /usr/local/lib &gt;&gt; /etc/ld.so.conf   
 644  
 645  
 646  
 647# echo /usr/local/lib/sasl &gt;&gt; /etc/ld.so.conf   
 648  
 649  
 650  
 651# ldconfig   
 652  
 653  
 654  
 655  
 656  
 657  
 658  
 659注意,这里使用的是SASL V1,目前SASL V2和Postfix配合上可能还有问题。   
 660  
 6616.3. 配置   
 662  
 663  
 664  
 665设置Postfix使用SASL的PAM模块来支持smtp auth认证:   
 666  
 667  
 668  
 669# echo pwcheck_method: pam &gt; /usr/lib/sasl/smtpd.conf   
 670  
 671  
 672  
 673Cyrus-IMAP的SASL配置不使用标准的sasl语法,它的配置文件放在/etc/imapd.conf中,详细配置在Cyrus-IMAP部分说明。   
 674  
 675  
 676  
 677整个系统使用的认证机制比较复杂。所有的应用(SMTP、IMAP、POP3等)都采用SASL V1来认证;而SASL是通过它所支持的PAM模块来借助pam_mysql接口对存储在MySQL数据库中用户信息进行认证的。   
 678  
 6797\. 安装Postfix   
 680  
 6817.1. 下载   
 682  
 683  
 684  
 685http://www.postfix.org/ftp-sites.html   
 686  
 687  
 688  
 689wget http://postfix.energybeam.com/source/official/postfix-1.1.11.tar.gz   
 690  
 6917.2. 编译与安装   
 692  
 693  
 694  
 695如果你的系统上原来有sendmail,先将其停止并将其文件改名:   
 696  
 697  
 698  
 699# /etc/init.d/sendmail stop   
 700  
 701  
 702  
 703# mv /usr/bin/newaliases /usr/bin/newaliases.OFF   
 704  
 705  
 706  
 707# mv /usr/bin/mailq /usr/bin/mailq.OFF   
 708  
 709  
 710  
 711# mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF   
 712  
 713  
 714  
 715  
 716  
 717  
 718  
 719然后添加两个组:postfix和maildrop和一个用户:postfix   
 720  
 721  
 722  
 723# groupadd –g 12345 postfix   
 724  
 725  
 726  
 727# groupadd -g 54321 postdrop   
 728  
 729  
 730  
 731# useradd –u 12345 –g 12345 -c postfix -M -d/no/where -s/no/shell postfix   
 732  
 733  
 734  
 735这里的组和用户的ID是系统中未使用的ID。   
 736  
 737  
 738  
 739  
 740  
 741  
 742  
 743编译Postfix,并支持mysql和sasl:   
 744  
 745  
 746  
 747# tar -xvzf postfix-1.1.11.tar.gz   
 748  
 749  
 750  
 751# cd postfix-1.1.11   
 752  
 753  
 754  
 755  
 756  
 757  
 758  
 759# make -f Makefile.init makefiles 'CCARGS=-DUSE_SASL_AUTH -DHAS_MYSQL -I/usr/include/mysql' \   
 760  
 761  
 762  
 763'AUXLIBS=-L/usr/lib/mysql -lmysqlclient –lsasl -lz -lm'   
 764  
 765  
 766  
 767# make install   
 768  
 769  
 770  
 771安装时,安装程序会提问一些问题,可以直接按回车采用默认值。   
 772  
 773  
 774  
 775  
 776  
 777  
 778  
 779给postfix用户做一个系统别名,使用/etc/aliases别名数据库中:   
 780  
 781# echo 'postfix: root' &gt;&gt; /etc/aliases   
 782  
 783  
 784  
 785生成/etc/aliases别名数据库:   
 786  
 787# postalias /etc/aliases   
 788  
 789  
 790  
 791  
 792  
 7937.3. 配置   
 794  
 795  
 796  
 797修改/etc/postfix/master.cf中的cyrus的配置,将如下一行:   
 798  
 799flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}   
 800  
 801  
 802  
 803修改为:   
 804  
 805flags=R user=cyrus argv=/usr/cyrus/bin/deliver –r ${sender} -m ${extension} ${user}   
 806  
 807  
 808  
 809这里要把cyrus的路径修改为你的cyrus实际安装路径。   
 810  
 811  
 812  
 813  
 814  
 815  
 816  
 817修改/etc/postfix/main.cf的配置:   
 818  
 819  
 820  
 821myhostname = mail00.cngnu.org   
 822  
 823  
 824  
 825mydomain = cngnu.org   
 826  
 827  
 828  
 829myorigin = cngnu.org   
 830  
 831  
 832  
 833mydestination = $mydomain,$myhostname   
 834  
 835  
 836  
 837  
 838  
 839  
 840  
 841mailbox_transport = cyrus   
 842  
 843  
 844  
 845virtual_maps = hash:/etc/postfix/virtual,mysql:/etc/postfix/mysql-virtual.cf   
 846  
 847  
 848  
 849  
 850  
 851  
 852  
 853smtpd_sasl_auth_enable = yes   
 854  
 855  
 856  
 857smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination reject   
 858  
 859  
 860  
 861broken_sasl_auth_clients = yes   
 862  
 863  
 864  
 865smtpd_sasl_security_options = noanonymous   
 866  
 867  
 868  
 869  
 870  
 871  
 872  
 873创建/etc/postfix/mysql-virtual.cf,它提供了本地用户和邮件转发功能。forward字段和username字段值默认是相同的,此时邮件本地递交到用户邮箱:username里面;forward是另外一个邮件地址或用户时,邮件转发到新的地址。此外,由于Postfix对于邮箱区别大小写,通过virtual功能的重写,可以保证大小写的邮件地址都可以正确接收。   
 874  
 875  
 876  
 877#   
 878  
 879  
 880  
 881# mysql config file for alias lookups on postfix   
 882  
 883  
 884  
 885#   
 886  
 887  
 888  
 889  
 890  
 891  
 892  
 893# the user name and password to log into the mysql server   
 894  
 895  
 896  
 897hosts = localhost   
 898  
 899  
 900  
 901user = mail   
 902  
 903  
 904  
 905password = secret   
 906  
 907  
 908  
 909  
 910  
 911  
 912  
 913# the database name on the servers   
 914  
 915  
 916  
 917dbname = mail   
 918  
 919  
 920  
 921  
 922  
 923  
 924  
 925# the table name   
 926  
 927  
 928  
 929table = user   
 930  
 931  
 932  
 933  
 934  
 935  
 936  
 937select_field = forward   
 938  
 939  
 940  
 941where_field = username   
 942  
 943  
 944  
 945additional_conditions = and status = '1'   
 946  
 947  
 948  
 949  
 950  
 951  
 952  
 953创建上面指定的/etc/postfix/virtual的DB库,并将超级用户的邮箱转发到一个普通用户如tester:   
 954  
 955  
 956  
 957# echo 'root tester' &gt;&gt; /etc/postfix/aliases   
 958  
 959  
 960  
 961# postmap /etc/postfix/virtual   
 962  
 963  
 964  
 965保留db3格式的virtual库是为了系统添加一些虚拟域和转发方便起见。   
 966  
 967  
 968  
 969  
 970  
 9718\. 安装Cyrus-IMAP   
 972  
 9738.1. 下载   
 974  
 975  
 976  
 977http://asg.web.cmu.edu/cyrus/download/   
 978  
 979  
 980  
 981wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.0.16.tar.gz   
 982  
 9838.2. 编译与安装   
 984  
 985  
 986  
 987编译Cyrus-IMAP,并取消kerberos支持(在Redhat中,kerberos库有问题,很难编译通过,Mandrake则可以通过;此外,我们也不需要kerberos的支持):   
 988  
 989  
 990  
 991# tar -zxf cyrus-imapd-2.0.16.tar.gz   
 992  
 993  
 994  
 995# cd cyrus-imapd-2.0.16   
 996  
 997  
 998  
 999  
1000  
1001  
1002  
1003# ./configure --with-cyrus-prefix=/usr/local/cyrus --with-sasl=/usr/local/lib/sasl –-with-auth=unix   
1004  
1005  
1006  
1007  
1008  
1009  
1010  
1011# make depend   
1012  
1013  
1014  
1015# make all CFLAGS=-O   
1016  
1017  
1018  
1019# make install   
1020  
1021  
1022  
1023  
1024  
1025  
1026  
1027Cyrus-IMAP的安装脚本有问题,cyradm(现在使用的是Perl版本,原来的TCL版本不再支持)所需要的perl模块被安装到一些不在Perl的@INC的目录里,需要手工安装.   
1028  
1029  
1030  
1031编辑安装文件里面的perl/imap/Makefile文件,修改其中下列部分:   
1032  
1033prefix=/usr/local   
1034  
1035INSTALLPRIVLIB = $(PREFIX)/lib/5.6.1   
1036  
1037INSTALLARCHLIB = $(PREFIX)/lib/5.6.1/i386-linux   
1038  
1039INSTALLSITELIB = $(PREFIX)/lib/site_perl/5.6.1   
1040  
1041INSTALLSITEARCH = $(PREFIX)/lib/site_perl/5.6.1/i386-linux   
1042  
1043  
1044  
1045修改为:   
1046  
1047prefix=/usr   
1048  
1049INSTALLPRIVLIB = $(PREFIX)/lib/perl5/5.6.1   
1050  
1051INSTALLARCHLIB = $(PREFIX)/lib/perl5/5.6.1/i386-linux   
1052  
1053INSTALLSITELIB = $(PREFIX)/lib/perl5/site_perl/5.6.1   
1054  
1055INSTALLSITEARCH = $(PREFIX)/lib/perl5/site_perl/5.6.1/i386-linux   
1056  
1057  
1058  
1059然后进行安装:   
1060  
1061  
1062  
1063# cd perl/imap   
1064  
1065  
1066  
1067# make install   
1068  
1069  
1070  
1071  
1072  
10738.3. 配置   
1074  
1075  
1076  
1077创建主配置文件/etc/cyrus.conf:   
1078  
1079  
1080  
1081# cp master/conf/normal.conf /etc/cyrus.conf   
1082  
1083  
1084  
1085添加cyrus-imap的管理账号cryus:   
1086  
1087  
1088  
1089# useradd -g mail cyrus   
1090  
1091  
1092  
1093# passwd cyrus   
1094  
1095  
1096  
1097Changing password for user cyrus.   
1098  
1099New password:   
1100  
1101Retype new password:   
1102  
1103passwd: all authentication tokens updated successfully.   
1104  
1105  
1106  
1107  
1108  
1109  
1110  
1111创建IMAP配置文件/etc/imapd.conf,管理员是cyrus:   
1112  
1113  
1114  
1115configdirectory: /var/imap   
1116  
1117  
1118  
1119partition-default: /var/spool/imap   
1120  
1121  
1122  
1123admins: cyrus   
1124  
1125  
1126  
1127sasl_pwcheck_method: pam   
1128  
1129  
1130  
1131  
1132  
1133  
1134  
1135建立Cyrus-IMAP服务器的目录结构:   
1136  
1137  
1138  
1139# mkdir –p /var/imap/sieve   
1140  
1141  
1142  
1143# mkdir /var/spool/imap   
1144  
1145  
1146  
1147  
1148  
1149  
1150  
1151# chown –R cyrus:mail /var/imap   
1152  
1153  
1154  
1155# chown –R cyrus:mail /var/spool/imap   
1156  
1157  
1158  
1159  
1160  
1161  
1162  
1163# su cyrus   
1164  
1165  
1166  
1167$ tools/mkimap   
1168  
1169  
1170  
1171$ exit   
1172  
1173  
1174  
1175这里tools/mkimap这个实用程序在cyrus-imap的源程序目录里面。   
1176  
1177  
1178  
1179  
1180  
1181  
1182  
1183创建日志:   
1184  
1185  
1186  
1187# touch /var/log/imapd.log /var/log/auth.log   
1188  
1189  
1190  
1191# echo local6.debug /var/log/imapd.log &gt;&gt; /etc/syslog.conf   
1192  
1193  
1194  
1195# echo auth.debug /var/log/auth.log &gt;&gt; /etc/syslog.conf   
1196  
1197  
1198  
1199  
1200  
1201  
1202  
1203# /etc/rc.d/init.d/syslog restart   
1204  
1205  
1206  
1207设置邮件限额:   
1208  
1209  
1210  
1211# chattr +S /var/imap/user /var/imap/user/*   
1212  
1213  
1214  
1215# chattr +S /var/imap/quota /var/imap/quota/*   
1216  
1217  
1218  
1219# chattr +S /var/spool/imap /var/spool/imap/*   
1220  
1221  
1222  
1223  
1224  
1225  
1226  
1227由于Cyrus-IMAP的主控进程和Postfix的主控进程名字一样,容易混淆而且不方便控制,所以将Cyrus-IMAP服务器的主控进程做个别名连接:cyrusd。   
1228  
1229  
1230  
1231# cd /usr/cyrus/bin   
1232  
1233  
1234  
1235# ln –s master cyrusd   
1236  
12379\. 测试   
1238  
12399.1. 启动   
1240  
12419.1.1. 启动MySQL   
1242  
1243  
1244  
1245MySQL在前面配置的时候已经启动。   
1246  
1247  
1248  
1249启动命令如下:   
1250  
1251  
1252  
1253# /etc/init.d/mysqld start   
1254  
12559.1.2. 启动Postfix   
1256  
1257  
1258  
1259启动命令如下:   
1260  
1261  
1262  
1263# /usr/sbin/postfix start   
1264  
1265  
1266  
1267或:   
1268  
1269  
1270  
1271# /etc/rc.d/init.d/sendmail start   
1272  
12739.1.3. 启动Cyrus-IMAP   
1274  
1275  
1276  
1277启动命令如下:   
1278  
1279  
1280  
1281# /usr/local/cyrus/bin/cyrusd&amp;   
1282  
12839.1.4. 启动脚本   
1284  
1285  
1286  
1287可以编写一个启动脚本mailsys来启动这些进程,这样就不需要单独启动postfix和cyrusd了:   
1288  
1289  
1290  
1291#!/bin/bash   
1292  
1293#   
1294  
1295# mailsys This shell script takes care of starting and stopping   
1296  
1297# Postfix and Cyrus-IMAP.   
1298  
1299  
1300  
1301# author : xingyu.wang <[email protected]> 2002/5/19   
1302  
1303#   
1304  
1305# chkconfig: 2345 80 30   
1306  
1307# description: Postfix is a Mail Transport Agent, which is the program   
1308  
1309# that moves mail from one machine to another.Cyrus-IMAP is a Mail   
1310  
1311  
1312  
1313# Deliver Agent, which provide POP3 and IMAP4 services for user and   
1314  
1315  
1316  
1317# deliver mail to local mailbox.   
1318  
1319# processname: mailsys   
1320  
1321# pidfile: /var/run/mailsys.pid   
1322  
1323  
1324  
1325# Source function library.   
1326  
1327. /etc/rc.d/init.d/functions   
1328  
1329  
1330  
1331# Source networking configuration.   
1332  
1333. /etc/sysconfig/network   
1334  
1335  
1336  
1337  
1338  
1339  
1340  
1341# Check that networking is up.   
1342  
1343[ ${NETWORKING} = "no" ] &amp;&amp; exit 0   
1344  
1345  
1346  
1347[ -f /usr/sbin/postfix ] || exit 0   
1348  
1349  
1350  
1351[ -f /usr/cyrus/bin/cyrusd ] || exit 0   
1352  
1353  
1354  
1355  
1356  
1357  
1358  
1359RETVAL=0   
1360  
1361prog="Mail System"   
1362  
1363  
1364  
1365start() {   
1366  
1367# Start daemons.   
1368  
1369  
1370  
1371echo -n $"Starting $prog: "   
1372  
1373  
1374  
1375echo -n $"SMTP "   
1376  
1377/usr/sbin/postfix start &gt; /dev/null 2&amp;&gt;1 &amp;   
1378  
1379  
1380  
1381echo -n $"POP3 IMAP4 "   
1382  
1383  
1384  
1385/usr/cyrus/bin/cyrusd &gt; /dev/null 2&amp;&gt;1 &amp;   
1386  
1387  
1388  
1389RETVAL=$?   
1390  
1391echo   
1392  
1393[ $RETVAL -eq 0 ] &amp;&amp; touch /var/lock/subsys/mailsys   
1394  
1395return $RETVAL   
1396  
1397}   
1398  
1399  
1400  
1401  
1402  
1403  
1404  
1405stop() {   
1406  
1407# Stop daemons.   
1408  
1409echo -n $"Shutting down $prog: "   
1410  
1411echo -n $"SMTP "   
1412  
1413  
1414  
1415/usr/sbin/postfix stop &gt; /dev/null 2&amp;&gt;1 &amp;   
1416  
1417  
1418  
1419echo -n $"POP3 IMAP4 "   
1420  
1421  
1422  
1423killproc `pidof cyrusd`   
1424  
1425RETVAL=$?   
1426  
1427echo   
1428  
1429[ $RETVAL -eq 0 ] &amp;&amp; rm -f /var/lock/subsys/mailsys   
1430  
1431return $RETVAL   
1432  
1433}   
1434  
1435  
1436  
1437# See how we were called.   
1438  
1439case "$1" in   
1440  
1441start)   
1442  
1443start   
1444  
1445;;   
1446  
1447stop)   
1448  
1449stop   
1450  
1451;;   
1452  
1453restart|reload)   
1454  
1455stop   
1456  
1457start   
1458  
1459RETVAL=$?   
1460  
1461;;   
1462  
1463*)   
1464  
1465echo $"Usage: $0 {start|stop|restart}"   
1466  
1467exit 1   
1468  
1469esac   
1470  
1471  
1472  
1473exit $RETVAL   
1474  
1475  
1476  
1477  
1478  
14799.2. 测试   
1480  
1481  
1482  
1483为了清楚起见,以下输入的命令用红色字体标示,系统显示信息用黑色字体标示。   
1484  
14859.2.1. 测试MySQL   
1486  
1487  
1488  
1489启动MySQL后,首先检查日志/var/log/messages有无错误信息,然后检查进程,应该有如下进程存在:   
1490  
1491  
1492  
1493# pstree | grep safe-mysqld   
1494  
1495  
1496  
1497  
1498  
1499  
1500  
1501|-safe-mysqld---safe-mysqld---safe-mysqld   
1502  
1503  
1504  
1505  
1506  
1507  
1508  
1509接着检查端口,应该有如下端口打开:   
1510  
1511  
1512  
1513# netstat -an | grep LISTEN   
1514  
1515  
1516  
1517  
1518  
1519  
1520  
1521tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN   
1522  
1523  
1524  
1525再使用如下命令测试MySQL:   
1526  
1527  
1528  
1529# mysql mail -u mail –p   
1530  
1531  
1532  
1533Enter password: (secret)   
1534  
1535Reading table information for completion of table and column names   
1536  
1537You can turn off this feature to get a quicker startup with -A   
1538  
1539  
1540  
1541Welcome to the MySQL monitor. Commands end with ; or \g.   
1542  
1543Your MySQL connection id is 99 to server version: 3.23.49   
1544  
1545  
1546  
1547Type 'help;' or '\h' for help. Type '\c' to clear the buffer.   
1548  
1549  
1550  
1551mysql&gt; show tables;   
1552  
1553  
1554  
1555+------------------+   
1556  
1557| Tables_in_mail |   
1558  
1559+------------------+   
1560  
1561| user |   
1562  
1563+------------------+   
1564  
1565  
1566  
15671 rows in set (0.00 sec)   
1568  
1569  
1570  
1571mysql&gt; select * from user;   
1572  
1573  
1574  
1575+----------+----------+----------------------------+--------+   
1576  
1577| USERNAME | PASSWORD | FORWARD | STATUS |   
1578  
1579+----------+----------+----------------------------+--------+   
1580  
1581| tester | testpw | tester | 1 |   
1582  
1583+----------+----------+----------------------------+--------+   
1584  
1585  
1586  
15871 rows in set (0.00 sec)   
1588  
1589  
1590  
1591mysql&gt; \q   
1592  
1593  
1594  
1595Bye   
1596  
1597  
1598  
1599  
1600  
16019.2.2. 测试Postfix   
1602  
1603  
1604  
1605启动Postfix后,首先检查日志/var/log/messages有无错误信息,然后检查进程,应该有如下进程存在:检查端口及进程:   
1606  
1607  
1608  
1609# pstree |grep master   
1610  
1611  
1612  
1613  
1614  
1615  
1616  
1617|-master-+-pickup   
1618  
1619  
1620  
1621  
1622  
1623  
1624  
1625接着检查端口,应该有如下端口打开:   
1626  
1627  
1628  
1629# netstat -an |grep LISTEN   
1630  
1631  
1632  
1633  
1634  
1635  
1636  
1637tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN   
1638  
1639  
1640  
1641  
1642  
1643  
1644  
1645再检测SMTP服务是否正常:   
1646  
1647  
1648  
1649# telnet localhost 25   
1650  
1651  
1652  
1653Trying 127.0.0.1...   
1654  
1655Connected to localhost.   
1656  
1657Escape character is '^]'.   
1658  
1659220 mail00.cngnu.org ESMTP Postfix   
1660  
1661QUIT   
1662  
1663221 Bye   
1664  
1665Connection closed by foreign host.   
1666  
1667  
1668  
1669使用如下命令测试postfix的SMTP的认证:   
1670  
1671  
1672  
1673PLAIN认证方式:   
1674  
1675  
1676  
1677# printf ‘tester\0000tester\0000testpw’|m</[email protected]></[email protected]>
Published At
Categories with 服务器类
Tagged with
comments powered by Disqus