FreeBSD6.2 + Postfix +实现功能全面的邮件系统
上一篇 / 下一篇 2007-08-03 14:29:51 / 个人分类:MailTech
FreeBSD6.2 + Postfix + Cyrus Sasl2 + Courier-imap + Mysql + Extmail+实现功能全面的邮件系统 转载请注明来自http://www.muduo.net/?chunsheng
l o|tIP R^,V"}^0木铎校园 BBS 社区^!p!B~*s5vWFreeBSD6.2 + Postfix + Cyrus Sasl2 + Courier-imap + Mysql + Extmail+实现功能全面的邮件系统
N,kQ]#?)XDg,UX0主要参考:冯勇的 《在Freebsd上建立ISP级的邮件系统》下载:http://www.muduo.net/batch.download.php?aid=866木铎校园 BBS 社区0``&_8^g:RG*e
具体安装步骤参考 冯勇 先生的 《在Freebsd上建立ISP级的邮件系统》,这里只是针对本人安装过程中所遇到的问题或是需要注意的点进行描述
X Z+U[N0pPu"@jL;Ru01,安装系统木铎校园 BBS 社区0Uxo#y \
2,安装mysql
G*B~_n03,安装apache:因为extmail和extman需要使用apache的cgi功能,同时extmail官方推介使用 apache+suexec的运行模式,所以,在ports安装apache的时候,木铎校园 BBS 社区$~
v/S%jA%pJd
cd /usr/ports/www/apache22木铎校园 BBS 社区yP6g*~5ymG
make SUEXEC_MODULES=yes SUEXEC_DOCROOT=/usr/local/www install clean
X0^0Q2Z9R^If$v
f*_0 这样会安装suexec模块,同时指定SUEXEC_DOCROOT的目录为 /usr/local/www ,如果你的extman和extmail的目录不在/usr/local/www下,请自行修改 SUEXEC_DOCROOT(如果在安装apache的时候没有指定SUEXEC_DOCROOT,则需要下载apache的源码自行编译,方法如下:木铎校园 BBS 社区zdNV.b0o,DT3^u
tar zxvf apachexxx.tgz
rW-J5fT!K0 cd httpd2.2
0HMP3P
@x'a pU-c0 ./configure '--enable--enable-suexec' '--with-suexec-calle=nobody' '--with-suexec-docroot=/usr/local/www/' '--with-suexec-logfile=/var/log/httpd-suexec.log'
t"O/n_I0afB9\mV0 make suexec木铎校园 BBS 社区5]T[VH&|/G5z|
make install-suexec (或直接copy suexec到已经安装的suexec的路径,chmod 4755 /some/path/suexec)
8c%Wu#R"}a0 以上部分请根据情况自行修改
-i/I7~G(bl0)木铎校园 BBS 社区}9c/Nw:T'F0X
4,解压extman到/usr/local/www木铎校园 BBS 社区
]l7R8QGo
cd /some/path/extman/docs
%qc&P G*Qo0pk0S0 mysql -uroot -p < extmail.sql木铎校园 BBS 社区B2?~0q C_F
mysql -uroot -p < init.sql
0b&{+O0_ V bT0 关于这两个sql所执行操作,请自行参考对应的sql文件,其主要作用是:
~P#R*a3C0 1)建立数据库结构,进行数据表初始化,供邮件系统使用
\-m7kPm|Y0 2)建立相应的账户,指定其权限
~\BUC05,安装Courier-imap木铎校园 BBS 社区3HJSvc%s/O
在ports中安装时,指定其支持openssl及MySQL
adD/M)x t0 修改rc.conf ,及/var/run/authdaemon的权限 : chmod a+x /var/run/authdaemond
+|Wx-d+I'd0|6Ir0 修改/usr/local/etc/authlib/authdaemonrc,及authmysqlrc文件木铎校园 BBS 社区8i9ja)wn*{1q
注意authdaemonrc文件中 DEBUG_LOGIN=2的情况,默认的maillog文件(/var/log/maillog)中会记录用户登录的明文密码
2{ o4FL"pFT;Ze"S06,安装Cyrus-SASL2
S a,YN+D9^N8C0 ports安装时需要注意 make WITH_MYSQL=yes WITH_AUTHDAEMON=yes install clean
(w9e0w Ra.c.Dy$b0 其中WITH_AUTHDAEMON在该port的Makefile中没有,不知道为何这里要加入这个(??)木铎校园 BBS 社区$g(i!x9`fj"`0G6T
创建/usr/local/lib/sasl2/smtpd.conf,并增加内容
4R$y1^,nt07,安装Postfix木铎校园 BBS 社区X)VJk tLp
ports安装时选择:SASL2,TLS,MYSQL,VDA,过程中有两个问题,选择默认木铎校园 BBS 社区pz%L-LR8X
执行初始化操作木铎校园 BBS 社区onKXa'yX@]
配置随机启动木铎校园 BBS 社区0_Q V[M.O1l
如果有/etc/periodic.conf文件,修改其内容:木铎校园 BBS 社区
{3YtKq|0d
daily_clean_hoststat_enable="NO"
9s*C @(K2Z&dN&E!EQ(zj0 daily_status_mail_rejects_enable="NO"木铎校园 BBS 社区q7kBh
x+~
daily_status_include_submit_mail="NO"木铎校园 BBS 社区y?lFH0eXs
daily_submit_queuerun="NO"木铎校园 BBS 社区I`^|/d!vyG^2wT
Postfix的配置文件在/usr/local/etc/postfix目录下,main.cf和master.cf
Krn
z;J\1E0 请参考冯勇先生的进行修改
m,jB;N G*@08,重新安装maildrop
o3`x"J2CFF$iG0 make WITH_AUTHLIB=yes install clean
!~+sk[
\1g0p0 然后authlib会出现OPTIONS的提示,选择AUTH_MYSQL木铎校园 BBS 社区I9g5jd/J(s`@B/tN
!O}-ZD5]f09,修改 /usr/local/etc/postfix/master.cf木铎校园 BBS 社区P
de-X@${_
修改maildrop一行为:木铎校园 BBS 社区 V5_dB%ip1E
maildrop unix - n n - - pipe
Qorh!o,f)W0 flags=DRhu user=vuser argv=/usr/local/bin/maildrop -d${user}@${nexthop} ${recipient} ${user} ${extension} ${nexthop}木铎校园 BBS 社区$b_s3x0h1L
注意两点:木铎校园 BBS 社区T*TR|/];F
user=vuser木铎校园 BBS 社区,rr Ep
j(L5v8Y
argv=/usr/local/bin/maildrop
h,~%u!S4c%nE%x5I0 argv为maildrop的路径木铎校园 BBS 社区$?qd+GI7]
z8`D|6F"y
下面将详细解释user的设置:木铎校园 BBS 社区pMx]1J?8E ?.V
apache suexec要求cgi程序的文件属主同apache配置中的SuexecUserGroup一致,同时,extmail及extman的cgi在用户及管理员配置的时候生成的关于邮件(主要是domains及mail user及的Maildir及目录下的各种文件)的属主同SuexecUserGroup的配置,并且为其他组用户不能读写的权限,而这些文件除了extman及extmail要对其进行操作外,postfix中的maildrop也要对其进行操作,所以,apache suexec的SuexecUserGroup要同maildrop的用户一致。
木铎校园 BBS 社区)L W8s7h5U1R
10,检查需要自动启动的程序,参考相应资料进行相应配置的修改,基本上这个邮件系统就可以用了
l~ i8~O|y"[A$^[011,关于postfix的master.cf,简单的解释一下我遇到的问题
%R#DS)v5l8^2Ks5u0V0l,X6jl"w5C1u0readme_directory = no
8]j-tp8a w2};Ly0smtpd_helo_required = yes
$GZGiq0strict_rfc821_envelopes = yes木铎校园 BBS 社区
Jc~/^:EU/?7{i2]1D
#smtpd_etrn_restrictions = permit_mynetworks,reject木铎校园 BBS 社区/q~8UQZ+e w I$u
smtpd_etrn_restrictions = reject木铎校园 BBS 社区 b I#AF `0S
local_recipient_maps =木铎校园 BBS 社区b6x2B:ozS
#mailbox_command = /usr/local/bin/deliverquota -w 90 ~/Maildir木铎校园 BBS 社区eL3x w3sD
command_directory = /usr/local/sbin木铎校园 BBS 社区a'p#b\o%gT
local_transport = virtual木铎校园 BBS 社区C7kDx;j]X
-e-`^,_#z1~#euh7q0################MYSQL###############木铎校园 BBS 社区#`*\&Oy-M
virtual_transport = virtual木铎校园 BBS 社区/X
U6x)bp\e}l
#virtual_mailbox_base = /var/mail/
)j!\-H \/FEt0L0#virtual_transport= maildrop木铎校园 BBS 社区2TT)P
G'}
#maildrop_destination_recipient_limit = 1木铎校园 BBS 社区
E:\s5b;a[\ hn
#maildrop_destination_concurrency_limit = 1木铎校园 BBS 社区zO3pw8f0J"g4n%I
virtual_gid_maps = static:125
@3@*d1x!_G(Q;[2m
k0virtual_uid_maps =static:125
:d~A/Mv?|C0virtual_mailbox_base = /data1/domains木铎校园 BBS 社区0`C2X7uNLA
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
!B\:y:s,h0virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
g%e;X.bb0virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf木铎校园 BBS 社区1r
{v6CH{-vR.n7Sx
!j&^qo^ jj*sL0###############Quota#############木铎校园 BBS 社区 oh2U$EiM
message_size_limit = 5242880
ktl)S_;m\0virtual_mailbox_limit_inbox = no
)VSd d;E O!?
K0virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql_virtual_limit_maps.cf木铎校园 BBS 社区J7X;kzWltr
virtual_mailbox_limit_override = yes
7?!W/E)\Q
|mu2[k0virtual_maildir_extended = yes木铎校园 BBS 社区!h9Xj'mP
virtual_create_maildirsize = yes木铎校园 BBS 社区} ~%knm)Q%s&Q
virtual_mailbox_limit = 52428800木铎校园 BBS 社区uv#]xBvV6W"[+j
virtual_mailbox_extended = yes木铎校园 BBS 社区t$\4]a^*s
virtual_maildir_limit_message = Sorry,the user's maildir has overdrawn his diskspace quota,please try again later.
5j&eq"De0##########SASL##########木铎校园 BBS 社区$MZo"J? AY@
smtpd_sasl_auth_clients = yes木铎校园 BBS 社区&u8lT&AGT6]
smtpd_sasl_auth_enable = yes
S7lJ4i}4tqN0smtpd_sasl_security_options = noanonymous
:N*[)K4~;G9eT0broken_sasl_auth_clients = yes木铎校园 BBS 社区V7\9h;l:As
#smtpd_sasl_local_domain = $mydomain
:ap,?~4b g4R0smtpd_sasl_application_name = smtpd
_+x"Q-CP0#取得邮件系统中的发件列表,禁止不在列表中的用户发送邮件木铎校园 BBS 社区f.[c([1nj\
smtpd_sender_login_maps =
.B7z/F\,@a8V'\0 mysql:/usr/local/etc/postfix/mysql_virtual_sender_maps.cf,
,a-|'A7I3d ]*O0 mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf木铎校园 BBS 社区/h{'J2{}?
smtpd_reject_unlisted_sender = yes
9w^$@2e!T!~,V6^7E0木铎校园 BBS 社区 @1U~8kZ7N&qDpV L#对发件人的限制,同时禁止不登陆即可发送到本域的邮件木铎校园 BBS 社区'`
R NDi
smtpd_sender_restrictions =
!f4{#` F^ L0 permit_sasl_authenticated,
(]Z8Z&d-zDf(w0# permit_mynetworks,
0a*Z_Mr&i+I}(s(g0 reject_unknown_sender_domain,
U i8q}a0 reject_non_fqdn_sender,
y.?7d'Pk0da:H|[0 reject_sender_login_mismatch,
P(e]-D
~(p0 reject_authenticated_sender_login_mismatch,
3n{4HOc0 reject_unauthenticated_sender_login_mismatch,
