由 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> CREATE DATABASE mail;
384
385
386
387mysql> GRANT ALL ON mail.* TO mail@localhost
388
389
390
391-> IDENTIFIED BY "secret";
392
393
394
395mysql> FLUSH PRIVILEGES;
396
397
398
399mysql> USE mail;
400
401
402
403mysql> CREATE TABLE user (
404
405
406
407-> username varchar(32) NOT NULL default '',
408
409
410
411-> password varchar(32) binary NOT NULL default '',
412
413
414
415-> forward varchar(128) NOT NULL default '',
416
417
418
419-> status int(11) NOT NULL default '1',
420
421
422
423-> UNIQUE KEY username (username)
424
425
426
427-> );
428
429
430
431
432
433
434
435mysql> INSERT INTO user VALUES
436
437
438
439-> ('tester','testpw','tester',1);
440
441
442
443
444
445
446
447mysql> \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 >> /etc/pam.d/imap
520
521# echo account sufficient pam_unix_acct.so >> /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 >> /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 >> /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 >> /etc/ld.so.conf
644
645
646
647# echo /usr/local/lib/sasl >> /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 > /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' >> /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' >> /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 >> /etc/syslog.conf
1192
1193
1194
1195# echo auth.debug /var/log/auth.log >> /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&
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" ] && 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 > /dev/null 2&>1 &
1378
1379
1380
1381echo -n $"POP3 IMAP4 "
1382
1383
1384
1385/usr/cyrus/bin/cyrusd > /dev/null 2&>1 &
1386
1387
1388
1389RETVAL=$?
1390
1391echo
1392
1393[ $RETVAL -eq 0 ] && 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 > /dev/null 2&>1 &
1416
1417
1418
1419echo -n $"POP3 IMAP4 "
1420
1421
1422
1423killproc `pidof cyrusd`
1424
1425RETVAL=$?
1426
1427echo
1428
1429[ $RETVAL -eq 0 ] && 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> 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> 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> \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]>