我在FreeBSD 6.2 上组建的邮件系统

时间:2007-12-14 21:18:56   来源:extmail.org  作者:bsdunix  点击:次  出处:技术无忧
关键字:freebsd mail postfix extmail


3、安装Postfix
#cd /usr/ports/mail/postfix
#make install clean
选择PCRE、SASL2 、TLS、MySQL、VDA ,安装过程中有两个提问,直接按回车,使用系统默认的回答。

#echo postfix: root >> /etc/aliases
#/usr/local/bin/newaliases
#mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
#ln -s /usr/local/sbin/sendmail /usr/sbin/sendmail
如果出现ln: /usr/sbin/sendmail: File exists 提示,把/usr/sbin/sendmail改名再链接。

设置postfix 随系统启动

postfix_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
创建/etc/periodic.conf 加入下面的内容

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

配置/usr/local/etc/postfix/main.cf ,在你安装时,只需要修改####BASE#### 部分即可

#mv main.cf main.cf.bak
这个配置文件已经加入了maildrop的支持

###################BASE##################
myhostname=mail.extmail.org #机器的名字
mydomain = extmail.org #你的域名
#mydestination = $myhostname #与下一行二选一
mydestination = #要通过虚拟域用户(虚拟帐户)发信认证,mydestination = 必须设置为空。
#将$myhostname 从mydestination里去掉,否则postfix会认为$myhostname 放的是系统帐户,
#很多人无法通过虚拟域用户发信认证,很可能与此有关。

local_recipient_maps =
command_directory = /usr/local/sbin
#local_transport = virtual
smtpd_banner = extmail.org ESMTP Mail System
message_size_limit = 14680064 #邮件大小
#mailbox_size_limit = 512000000
#################MySQL################
virtual_alias_maps =mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
#virtual_gid_maps = static:125
#virtual_gid_maps = static:1000
virtual_mailbox_base = /data/domains #邮件保存的目录
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
#virtual_mailbox_limit = 512000000
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
#virtual_minimum_uid = 125
#virtual_minimum_uid = 1000
#virtual_transport = virtual
virtual_transport = maildrop:
maildrop_destination_recipient_limit = 1

#virtual_uid_maps = static:125
#virtual_uid_maps = static:1000
################Quota################
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql_virtual_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry,the user's Maildir has overdrawn his diskspace quota ,please tray again later.
virtual_overquota_bounce = yes

##############SASL####################
smtpd_sasl_auth_enable = yes
smtpd_sasl2_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes

smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,

reject_rbl_client cbl.anti-spam.org.cn #CBL 服务器 具体请看anti-spam.org.cn
#注意上面几行前面是有空格的。


readme_directory = no
sample_directory = /usr/local/etc/postfix
sendmail_path = /usr/local/sbin/sendmail
html_directory = no
setgid_group = maildrop
manpage_directory = /usr/local/man
daemon_directory = /usr/local/libexec/postfix
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
queue_directory = /var/spool/postfix
mail_owner = postfix
以下四个文件在extman 软件包Docs 目录里,使用时,直接复制到/usr/local/etc/postfix 目录即可。

mysql_virtual_alias_maps.cf

user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = alias
select_field = goto
where_field = address
additional_conditions = AND active = '1'
mysql_virtual_domains_maps.cf

user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = domain
select_field = description
where_field = domain
additional_conditions = AND active = '1'
mysql_virtual_mailbox_maps.cf

user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = maildir
where_field = username
additional_conditions = AND active = '1'
mysql_virtual_mailbox_limit_maps.cf

user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = quota
where_field = username
additional_conditions = AND active = '1'
至此postfix 基本设置完成,但还不能收发邮件。

4、安装maildrop
我们在设置邮件服务器时MTA 部分还是使用posfix 本身的帐户进行处理邮件,由于maildrop 不能和postfix 与同一用户身份处理邮件,所以我们新开一个用户用户maildrop 处理。

添加vgroup

#pw groupadd vgroup -g 1000
添加vuser

#pw useradd vuser -g 1000 -u 1000 -s /sbin/nologin -d /sbin/nologin -c "virtual mail user"
安装maildrop,记得要把WITH_AUTHLIB=yes 加上

#cd /usr/ports/mail/maildrop
#make install WITH_AUTHLIB=yes
选择AUTH_MYSQL
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Options for maildrop 2.0.1 x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x x [ ] AUTH_LDAP LDAP support x x
x x [X] AUTH_MYSQL MySQL support x x
x x [ ] AUTH_PGSQL PostgreSQL support x x
x x [ ] AUTH_USERDB Userdb support x x
x x [ ] AUTH_VCHKPW Vpopmail/vchkpw support x x

修改/usr/local/etc/postfix/master.cf ,把maildrop 原先已有的记录注译(即删除旧记录),加上下面的内容

maildrop unix - n n - - pipe
flags=DRhu user=vuser argv=/usr/local/bin/maildrop -d ${user}@${nexthop} ${recipient} ${user} ${extension} ${nexthop}
或者把 原来master.cf 文件中的user=vmail 改为 vuser,其余不变也可以。


设置邮件存储目录

#mkdir -p /data/domains/extmail.org/test
#/usr/local/bin/maildirmake /data/domains/extmail.org/test/Maildir
#chown -R 1000:1000 /data/domains/

至此,我们的邮件系统基础部分已经安装完成了。重启系统,开始进行测试。


六、测试系统
1、测试maildrop 是否正常
建议进入系统后去检查/etc/rc.conf 中的服务是否正常。

注意邮件系统用户名格式是:[email]user@domain.ltd[/email] ,是支持多域的,和平时用的有点不一样。

用SecureCRT 新开 二个窗口,其中一个用于输入命令,一个查看maillog

#tail -f /var/log/maillog
观察下面的操作,证明maildrop 已投递正常

#echo "test" | maildrop -V 10 -d [email]test@extmail.org[/email]
maildrop: authlib: groupid=1000
maildrop: authlib: userid=1000
maildrop: authlib: logname=test@extmail.org, home=/home/data/domains/extmail.org/test, mail=/home/data/domains/extmail.org/test/Maildir/
maildrop: Changing to /home/data/domains/extmail.org/test
Message start at 0 bytes, envelope sender=test@extmail.org
maildrop: Attempting .mailfilter
WARN: quota string '5242880' not parseable
maildrop: Delivery complete.
maillog 将会有如下显示

Mar 10 14:39:58 mail authdaemond: Authenticated: sysusername=, sysuserid=1000, sysgroupid=1000,
homedir=/home/data/domains/extmail.org/test, address=test@extmail.org, fullname=Test user,
maildir=/home/data/domains/extmail.org/test/Maildir/, quota=5242880, options=
Mar 10 14:39:58 mail authdaemond: Authenticated: clearpasswd=, passwd={crypt}uywiuN.XggXXc

八、安装extmail /extman
1、设置apache 的运行身份
修改/usr/local/etc/apache2/httpd.conf

#User www
#Group www
User vuser
Group vgroup
在httpd.conf 加入下面的内容 访问技术无忧网,软硬件通吃保你技术无忧!网址http://www.pc51.net


文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面