使用Postfix构建基于FreeBSD的邮件系统(简化版)

原创 2007年09月21日 15:57:00
由于写上一篇文章的时候也刚刚接触postfix,对电子邮件系统理解也很肤浅,虽然勉强建立了可以运行的邮件系统,但是也暴露了大量的问题。同时盲目的追求功能,使得整个安装过程较为漫长,对于想入门的朋友来说难度较大。这次我将上一篇文章重新修改,并去掉查毒和反垃圾邮件的功能,完成安装后,建立一个具有完整收发邮件功能,但安全性较低的邮件系统,供刚入门的朋友借鉴。
基于postfix的邮件系统按照功能划分可分为3个部分,包括smtp、imap/pop3和身份验证,这3部分功能分别由postfix/courier-imap和courier-authdaemond实现,其中courier-authdaemond又要调用cyrus-sasl2进行验证。邮件系统的所有数据,可以保存在ldap/pgsql或者mysql中。为了使安装过程简单易懂,本文将使用mysql。

0、 更新ports
pkg_add -r cvsup
cvsup -gL 2 -h cvsup.freebsdchina.org /usr/share/examples/cvsup/ports-supfile
1、 安装sasl2
sasl2是smtp验证所需要的软件包,由于postfix安装时采用默认配置,使得sasl不支持courier-authdaemond,因此需要首先用指定的选项进行安装。
cd /usr/ports/security/cyrus-sasl2
make WITH_AUTHDAEMON=yes install clean
2、 安装postfix
cd /usr/ports/mail/postfix
make config
选中[PCRE]、[SASL2]、[MySQL]、[VDA],sasl2用于smtp验证,mysql用于存放数据表,vda用于支持虚拟投递。
make WITH_MYSQL_VER=51 install clean
指定安装5.1版本的mysql,注意这里安装的是mysql-client,稍后还需要安装mysql-server。在安装过程中两次提示均选y,以激活postfix
3、 安装courier-imap
cd /usr/ports/mail/courier-imap
make config
选中[AUTH_MYSQL]
make install clean
4、 安装mysql-server
cd /usr/ports/databases/mysql51-server
make WITH_CHARSET=gb2312 install clean
5、 安装apache。安装完成后编辑httpd.conf将主目录设置为/usr/local/www
cd /usr/ports/www/apache22
make install clean

6、 安装php。更新ports后的php安装方式有所变化,首先在make config需要选中[Apache]以编译apache模块,安装完成后在httpd.conf中修改2处配置:
a、在DirectoryIndex中加入index.php
b、加入AddType application/x-httpd-php .php
cd /usr/ports/lang/php5
make config
make install clean
7、 安装php5-extensions。根据需要选择模块,保证[MYSQL]、[PCRE]、[SESSION]被选中。
cd /usr/ports/lang/php5-extensions
make config
make install clean

8、 安装postfixadmin。安装完成后将网页移动至/usr/www/data/
cd /usr/ports/mail/postfixadmin
make install clean
mv /usr/local/www/postfixadmin /usr/local/www/data/
9、 安装squirrelmail
cd /usr/ports/mail/squirrelmail
make install clean
至此,所需软件全部安装完毕,下面将依次进行配置。
注意:下面配置文件的每一行结尾必须保证没有空格!

1、 配置sasl2
ee /usr/local/lib/sasl2/smtpd.conf
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path: /var/run/authdaemond/socket
2、 配置mysql数据库
chown -R mysql:mysql /var/db/mysql
cd /usr/local/bin/
./mysql_install_db
cd /usr/local/libexec
./mysqld --user=mysql&
cd /usr/local/www/postfixadmin
mysql -uroot -p < DATABASE_MYSQL.TXT
3、 配置postfix
使用和apache一样的用户来读取邮件目录,因为apache用户为www,id:80,所以要注意/usr/local/etc/postfix/main.cf中的用户id。
newaliases
mkdir -p /usr/local/virtual
chown -R www:www /usr/local/virtual
chmod -R 775 /usr/local/virtual
ee /usr/local/etc/postfix/main.cf
在最后添加:
#======= BASE ==============
#myhostname =
#mydomain = example.com
home_mailbox = maildir/
#mydestination = $myhostname
#local_recipient_maps =
#======= MYSQL =============
virtual_gid_maps = static:80
virtual_mailbox_base = /usr/local/virtual
virtual_uid_maps = static:80
virtual_minimum_uid = 80
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql/virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql/virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql/virtual_mailbox_maps.cf
#======= Quota ============
message_size_limit = 5242880
virtual_mailbox_limit_inbox = no
virtual_mailbox_limit_override = yes
virtual_maildir_extended = yes
virtual_create_maildirsize = yes
virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql/virtual_mailbox_limit_maps.cf
virtual_mailbox_limit = 52428800
#======== SASL ================
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination reject
#smtpd_sasl_local_domain = $mydomain
smtpd_client_restrictions = permit_sasl_authenticated

从上面的配置可以看出,有4个表保存在mysql数据库中,分别是virtual_alias(虚拟别名)、virtual_domains(虚拟域)、virtual_mailbox_maps(虚拟邮箱映射)、和virtual_mailbox_limit(虚拟邮箱限额)。Postfix访问mysql的特定表和字段分别由4个对应的配置文件设置。
cd /usr/local/etc/postfix/
mkdir mysql
cd mysql

1、ee virtual_alias_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address

2、ee virtual_domains_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain

3、ee virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username

4、ee virtual_mailbox_limit_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username

4、 配置courier-authdaemond
cd /usr/local/etc/rc.d
./courier-authdaemond start #脚本文件名可能是courier-authdaemond.sh
chmod o+x /var/run/authdaemond
cd /usr/local/etc/authlib
ee authdaemonrc
修改authmodulelist和authmodulelistorig,指定只使用mysql进行验证
authmodulelist="authmysql"
authmodulelistorig="authmysql"
设置authmysqlrc,使authdaemond能够查询mysql,注意删除每行末尾的空格。
ee authmysqlrc
DEFAULT_DOMAIN example.com
MYSQL_CRYPT_PWFIELD password
MYSQL_DATABASE postfix
MYSQL_GID_FIELD '80'
MYSQL_HOME_FIELD '/usr/local/virtual'
MYSQL_LOGIN_FIELD username
MYSQL_MAILDIR_FIELD maildir
MYSQL_NAME_FIELD name
MYSQL_OPT 0
MYSQL_PASSWORD postfix
#MYSQL_PORT 0
#MYSQL_QUOTA_FIELD quota
MYSQL_SERVER localhost
MYSQL_UID_FIELD '80'
MYSQL_USERNAME postfix
MYSQL_USER_TABLE mailbox
5、 配置启动项
ee /etc/rc.conf
添加下列条目:
sendmail_enable="NONE"
postfix_enable="YES"
apache22_enable="YES"
mysql_enable="YES"
courier_authdaemond_enable="YES"
courier_imap_imapd_enable="YES"
courier_imap_pop3d_enable="YES"
6、 重起电脑
Reboot
7、 配置postfixadmin
cd /usr/local/www/data/postfixadmin
ee config.inc.php
$CONF['default_language'] = 'cn';
$CONF['admin_email'] = 'postmaster@example.com';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['quota'] = 'YES';

通过http://localhost/postfixadmin/setup.php查看是否安装成功。
进入http://localhot/postfixadmin/admin进入管理页面,建立虚拟域和用户。
观察/usr/local/virtual下是否出现对应的域名目录和用户目录。
注意:如在postfixadmin中新建与本机域名相同的虚拟域,则有可能无法建立相应的域名和用户的文件夹。这种情况应通过mx记录解决。如邮件服务器位于example.com上,则应指定postfix的域名为mail.example.com,再添加mx记录指向mail.example.com,这样即可建立example.com虚拟域。
8、 配置squirrelmail
cd /usr/local/www/data/squirrelmail
./configure
选择10. Languages
设置如下:
1. Default Language : zh_CN
2. Default Charset : gb2312
保存退出
进入http://localhost/squirrelmail/测试邮箱。

注意:除了在authmysqlrc中DEFAULT_DOMAIN指定的域外,其他域用户登陆都需要输入完整的电子邮件地址。
 

安装邮件服务器之五

24、垃圾邮件和病毒邮件过滤设置 设置MailScanner 编辑/usr/local/etc/MailScanner/virus.scanners.conf,修改如下语句: clamav   ...
  • lidengzhi0000
  • lidengzhi0000
  • 2014年07月21日 17:33
  • 1832

POSTFIX邮件系统搭建

一、前言 1.最终可以实现的功能 本文主要介绍了一种简单的文件搭建系统。 可以实现以下两个功能: 1) 在服务器端(邮件服务器)使用编写的脚本发送带附件的邮件,邮件的后缀@后面部分为购买的域名。 2...
  • smzq123
  • smzq123
  • 2016年07月12日 11:55
  • 251

从零学习搭建邮件系统

邮件系统入坑需谨慎...
  • YOUNGYUYEAH
  • YOUNGYUYEAH
  • 2017年06月25日 19:44
  • 418

架构基于FreeBSD和Postfix的IGENUS Webmail邮件系统

本文介绍使用FreeBSD+Postfix+Cyrus-sasl+Courier-imap+igenus+spamassassin+Clamav+mailscanner+mailscanner-mrt...
  • josonchen
  • josonchen
  • 2015年05月13日 21:11
  • 203

邮件系统postfix安装

原文地址:http://www.cnblogs.com/apexchu/p/4271264.html [http://blog.chinaunix.net/uid-174325-id-17440...
  • yohoph
  • yohoph
  • 2015年05月19日 16:28
  • 1409

postfix邮件系统完整版

redhat9+postfix+cyrus-sasl+mysql+postfixadmin+courier-imap+courier-maildrop+squirrelmail(courier-sqw...
  • yanghedalian
  • yanghedalian
  • 2013年03月28日 09:59
  • 1123

邮件系统postfix安装和设置(一)

邮件系统postfix安装和设置(一) 邮件系统postfix安装和设置 一、 postfix概述 postfix是Wietse Venema在IBM的GPL协议之下研发的MTA(邮件传输 代...
  • lcathm
  • lcathm
  • 2014年12月09日 15:27
  • 910

邮件系统postfix安装与配置

一、 postfix概述 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输 代理)软件。下面一段话摘自postfix的官方站点(http://www.postf...
  • u014461454
  • u014461454
  • 2014年03月31日 17:21
  • 231

邮件系统postfix安装与配置

邮件系统postfix安装与配置 一、 postfix概述 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输 代理)软件。下面一段话摘自postfix...
  • secsky
  • secsky
  • 2014年11月13日 19:36
  • 340

邮件系统postfix安装与配置

邮件系统postfix安装与配置 一、 postfix概述 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输 代理)软件。下面一段话摘自p...
  • dxm2025
  • dxm2025
  • 2014年11月13日 21:33
  • 261
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Postfix构建基于FreeBSD的邮件系统(简化版)
举报原因:
原因补充:

(最多只允许输入30个字)