配置postfix+dovecot+mysql+postfixadmin+squirrelmail 邮件系统笔记

  • Post author:
  • Post category:mysql


最近想搭建一个完整的mailserver,查了很多资料,一直没有成功,网上大部分资料是在redhat系列的操作系统上的,而且很多都是采用rpm包。

我现在的系统是suse Linux有许多包已经安装,如果安装新的包,会产生很多冲突问题,卸载又遇到很多依赖问题,所以决定全部采用源代码的方法来安装。为了以后查询方便,将配置过程和资料整理如下。

下面开始正式安装,这次安装,首先是根据http://www.redlinux.org/read.php?tid-481.html

贴子中的安装的,开始不明白这些软件的用途,乱装一气,然后又参照橡皮树老师的网络视频配置,最终排错过程中不得不细细考究了一下这些软件的作用,为了简单,最后基本上安装橡皮树老师的配合来的,唯一不同的地方是,我的安装基本上是采用源代码方式,而且配置文件全部是自定义的,下面有些软件的安装对于本邮件系统并没有必要,但是考虑以后的功能增加,就先装上。

zlib的安装

zlib是一个传输的压缩支持库

zlib

./configure -prefix=/opt/mailserver/zlib -64

curl 的安装

curl是一个提供http,ftp,imap等协议的命令行模块。

下面是编译参数

./configure

-prefix=/opt/mailserver/curl

-with-ssl=/opt/mailserver/openssl

–with-zlib=/opt/mailserver/zlib


Libssh2的安装

本打算把libssh的支持也编译进去,但是编译libssh失败,提示openssh的库文件不对。

Libssh build with openssl error

`OPENSSL_cpuid_setup’ can not be used when making a shared object;

换了几个版本,故障依旧,因此就没有加入libssh支持。

下面是编译参数

./configure

–prefix=/opt/mailserver/curl

–with-zlib=/opt/mailserver/zlib

–with-ssl=/opt/mailserver/openssl

–with-libssh2=/opt/mailserver/libssh2


Libssh与libssh2的区别如下

item                                     libssh2                              libssh

Licence                           Modified BSD                           LGPL

Non-blocking API               everything                            parts

Limits on                           >4GB files yes                        no

Server-side                           no                                      yes

Stable API                             yes                                     no

C compatibility                       C89                                   C99

strict namespace                   yes                                     no

man pages for all functions    yes                                    no

SSHv1 support                        no                                     yes

Build concept                           Autotools                         CMake

安装:Berkeley-db

这是一个数据库软件,据说是Cyrus-SASL and Cyrus-IMAP所必需的数据库支持。

tar xzvf db-4.7.25.tar.gz

cd db-4.7.25

../dist/configure –prefix=/opt/mailserver/BerkeleyDB

make

make install


下面的步骤,主要是对让系统找到库文件和头文件,对于不同的系统,可能会有不同的操作。

如果不链接,下面装openldap就会报错,提示库文件不匹配。

当然,本次邮件系统并没有用到这个功能。

ln -s /opt/mailserver/ BerkeleyDB/include/* /usr/include/

mv /lib64/libdb-4.so /lib64/libdb-4.so.old

ln -s /opt/mailserver/ BerkeleyDB/lib/* /lib64/

安装:Openldap

这个软件功能还不是很了解,只是看到postfix支持此功能就顺便装上了。

tar xzvf openldap-stable-20100219.tgz

cd openldap-2.4.21

./configure –prefix=/opt/mailserver/openldap

make

make install


安装:Openssl

这个在postfix也是支持的,但是考虑到配置的复杂性,暂时没有在邮件系统中使用,在imap的软件安装中,也要用到openssl库,而且经常会报openssl库的错误,一般情况,分别编译静态库和动态库,或者编译含 -fPIC 选项的静态库,可能会解决问题。

./config shared 生成动态库

./config -fPIC 生成静态库加-fPIC选项


./config –prefix=/opt/mailserver/openssl

make

make install

下面再重新编译一次,生成动态库,默认的没有生成动态库,这个在php编译的时候会需要。

./config –prefix=/opt/mailserver/openssl shared

make

make install

我用这个库在安装最新版本的dovecot时,提示静态库需要用-fPIC来编译,本次就没有测试了,因为最终采用的是稳定版本的dovecot。

下面的步骤,主要是对让系统找到库文件和头文件,对于不同的系统,可能会有不同的操作。ln -s /opt/mailserver/openssl/include/openssl /usr/include/openssl

ln -s /opt/mailserver/openssl/lib/* /lib64

安装:mysql

mysql采用的是相应平台二进制包的形式安装,如果采用源代码安装难度要大一点,因为我曾经失败了几次,最终下载了一个二进制包,步骤基本上再INSTALL文件中有,需要的额外操作时如何修改配置文件的位置问题,而且Mysql配置文件修改后,其他配合的软件参数也有许多地方需要修改。

groupadd mysql

useradd -g mysql mysql

cd /opt/mailserver

tar xzvf mysql-5.1.45-linux-x86_64-glibc23.tar.gz

mv mysql-5.1.45-linux-x86_64-glibc23 mysql

cd mysql

chown -R mysql .

chgrp -R mysql .

scripts/mysql_install_db –user=mysql

chown -R root .

chown -R mysql data

bin/mysqld_safe –user=mysql & //测试是否正确启动

bin/mysqladmin -u root password 123 //给root用户加密码

cp support-files/mysql.server /etc/init.d/mailserver.mysql //增加自启动脚本

vi /etc/init.d/mailserver.mysql

——————————————————————————————

basedir=/opt/mailserver/mysql

extra_args=”-e $basedir/my.cnf” 改成 extra_args=”-c $basedir/my.cnf”

$bindir/mysqld_safe –datadir=$datadir –pid-file=$server_pid_file $other_args >/dev/null 2>&1 &

改成

$bindir/mysqld_safe –defaults-file=$basedir/my.cnf –datadir=$datadir –pid-file=$server_pid_file $other_args >/dev/null 2>&1 &

———————————————————————————————-

剩余的配置,就是修改$basedir/my.cnf文件内的内容,主要是mysql.sock的路径,此处

我的配置是/opt/mailserver/mysql/data/mysql/mysql.sock

注意,data目录最好是777权限,以免出错。

安装:cyrus-sasl

这个软件是提供smtp的sasl验证的,因为本次最终是采用dovecot进行smtp验证,因此实际也没有利用这个软件的功能,考虑以后进行完善。

tar xzvf cyrus-sasl-2.1.22.tar.gz

cd cyrus-sasl-2.1.22

./configure –prefix=/opt/mailserver/cyrus-sasl –enable-login –enable-sql –disable-digest –with-openssl=/opt/mailserver/openssl –with-mysql=/opt/mailserver/mysql/

如何没有采用–disable-digest,有可能会编译不通过,在我的机器上是这样,Google后才知道要禁用。

下面先备份老的sasl安装包

mv /usr/lib/sasl /usr/lib/sasl.off

mv /usr/lib/sasl2 /usr/lib/sasl2.off

mv /usr/lib64/sasl2 /usr/lib64/sasl2.off //64位机器上需要运行

make

make install

下面的步骤,主要是对让系统找到库文件和头文件,对于不同的系统,可能会有不同的操作。

ln -s / opt/mailserver/cyrus-sasl /usr/local/sasl2

ln -s /opt/mailserver/cyrus-sasl/lib/* /lib64

安装:dovecot

tar xzvf dovecot-1.2.11.tar.gz

cd dovecot-1.2.11

./configure –prefix=/opt/mailserver/dovecot –with-ldap=yes –sysconfdir=/etc/dovecot –with-mysql –with-ssl=openssl –with-ssl –with-ssldir=/etc/ssl

make

make install

这个–with-ldap=yes参数我不记得是否加上了,而且即使不加上,默认应该是开启的,具体的可参考./configure -help

安装:Postfix

Postfix的安装需要支持mysql,默认的包安装方式是不支持的。

在这里我们让它支持mysql,ssl,sasl

groupadd -g postfix

useradd -g postfix -c postfix -d /dev/null -s /bin/false postfix

groupadd postdrop

make -f Makefile.init makefiles ‘CCARGS=-DHAS_MYSQL -I/opt/mailserver/mysql/include -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/opt/mailserver/cyrus-sasl/include -DUSE_TLS -I/opt/mailserver/openssl/include ‘ ‘AUXLIBS=-L/opt/mailserver/mysql/lib -lmysqlclient -lz -lm -L/ opt/mailserver/cyrus-sasl/lib -lsasl2 -L/opt/mailserver/openssl/lib64 -lssl -lcrypto’

make

make install

make install时可以用来定义配置文件的存放位置,在这里,除了postfix.conf配置文件

全部放在了/opt/mailserver/postfix内部。

安装完成后,

用postconf -a 来检查是否安装了sasl

用postconf -m 来检查是否安装了mysql


安装:apache2

Apache编译时加载全部模块

tar xzvf cd httpd-2.2.15.tar.gz

cd httpd-2.2.15

./configure

–prefix=/opt/mailserver/apache2

-enable-so

–enable-modules=all

–enable-mods-shared=all

-enable-so表示支持动态模块

–enable-modules=all表示编译所有模块

–enable-mods-shared=all 表示全部采用动态模块

其他参数参照:

http://hi.baidu.com/sheshi37c/blog/item/0455247fc7c1450029388a1e.html

make

make install

实际不需要全部将这些模块都编译,我这里只是为了想用Apache的mod_status和mod_info模块来查看所有服务器信息和模块安装情况,就和php安装后的phpinfo()函数一样,而又不想一个一个研究这些模块,

安装完成后,修改httpdconf,加入

Include conf/extra/httpd-info.conf

如果是完整安装,./conf/extra/httpd-info.conf文件已经为你写好了。

只要修改Allow from 部分,修改为 Allow from all,就可以在

http://servername/server-status 和

http://servername/server-info 中查看所有的apache2信息了。

conf/extra/httpd-info.conf中配置如下:

<Location /server-status>

SetHandler server-status

Order allow,deny

Deny from nothing

Allow from all

</Location>

<Location /server-info>

SetHandler server-info

Order allow,deny

Deny from nothing

Allow from all

</Location>

http://your.server.name/server-status?refresh=N访问状态页面可以每N秒自动刷新一次。

http://your.server.name/server-status?auto获得一个面向机器可读的状态文件

perl模块安装

参考

http://perl.apache.org/docs/2.0/user/install/install.html#Dynamic_mod_perl

tar xzvf mod_perl-2.0-current.tar.gz

cd mod_perl-2.0.4

perl Makefile.PL MP_AP_PREFIX=/opt/mailserver/apache2

make

make install

vi http.conf加入

LoadModule perl_module modules/mod_perl.so

fast-cgi模块安装

tar xzvf mod_fastcgi-2.4.6.tar.gz

cd mod_fastcgi-2.4.6

vi makefile

把/usr/local/httpd改成 /opt/mailserver/apache2

make

make intall

vi httpd.conf 加入

LoadModule fastcgi_module modules/mod_fastcgi.so

suexec模块安装

参考

http://bbs.linuxphp.org/thread-499-1-1.html

http://1kankan.com/ApacheManual/suexec.html

http://blog.5ilinux.com/archives/2006/07/

/opt/mailserver/apache2/bin/apxs -c mod_suexec.c

/opt/mailserver/apache2/bin/apxs -i -a -n suexec ./.libs/mod_suexec.so

cd ../../

./configure

–prefix=/opt/mailserver/apache2

-enable-so

–enable-suexec

–with-suexec-bin=/opt/mailserver/apache2/bin/suexec

–with-suexec-logfile=/var/log/suexec.log

–with-suexec-caller=daemon

–with-suexec-docroot=/srv/www/rcac

–enable-modules=all –enable-mods-shared=all

make suexec

make install-suexec

完成后用/opt/mailserver/apache2/bin/suexec -V 查看参数


安装:php5

因为postfixadmin需要用到imap和mbstring以及mysql,需要php5安装支持imap,mbstring,mysql

imap的安装,费了很多的时间,可参照

http://www.phpbuilder.com/board/showthread.php?p=10944374

对于imap安装另一种说法可能比较权威参照

http://squirrelmail.org/docs/admin/admin-3.html#ss3.2

根据文中所说SSLTYPE=unix表示用Openssl,SSLTYPE=unix表示用IMAP的ssl

make port-name PASSWDTYPE=” SSLTYPE=none

port-name 可从Makefile针对自己的系统查询,对于SUSE是lsu

因为我装了openssl, 所以我的参数是

make port-name PASSWDTYPE=” SSLTYPE=none

参考的安装方法见下面

通过yast安装pam-devel

wget ftp://ftp.cac.washington.edu/mail/imap.tar.Z

tar zxf imap.tar.Z

cd imap-2007a

vi Makefile

—————————–

Find EXTRACFLAGS=

and add change it to: //对于64位系统要增加额外的-fPIC选项

EXTRACFLAGS=-fPIC

—————————–

make lr5 PASSWDTYPE=std SSLTYPE=unix.nopwd IP6=4

echo “set disable-plaintext nil” > /etc/c-client.cf

mkdir /usr/local/imap-2007a

mkdir /usr/local/imap-2007a/include/

mkdir /usr/local/imap-2007a/lib/

chmod -R 077 /usr/local/imap-2007a

rm -rf /usr/local/imap-2007a/include/*

rm -rf /usr/local/imap-2007a/lib/*

rm -rf /usr/sbin/imapd

cp imapd/imapd /usr/sbin/

cp c-client/*.h /usr/local/imap-2007a/include/

cp c-client/*.c /usr/local/imap-2007a/lib/

cp c-client/c-client.a /usr/local/imap-2007a/lib/libc-client.a

此时,对于编译php5有2种方法,一种采用所有参数放在php5 config命令

另一种,先按照默认的配置编译,然后用模块分别安装的方法安装

不知道为什么,我用第一种方法安装后找不到模块文件或者说无法启用这些支持的模块,所以最后采用的是第二种方法。

第一种方法的参数是

./configure

–prefix=/opt/mailserver/php5

–with-apxs2=/opt/mailserver/apache2/bin/apxs

–with-mysql=/opt/mailserver/mysql

–enable-mbstring

–with-imap=/opt/mailserver/imap

SSLTYPE=unix

–with-imap-ssl

–with-openssl

–with-config-file-path=/opt/mailserver/php5

cp php.ini-production /opt/mailserver/php5/php.ini


编译时,如果不加SSLTYPE=unix会出现错误,提示库不匹配,原因可能如下

this is because php won’t use IMAP without SSL. for some people building IMAP with SSL doesn’t work and the compile IMAP with this option SSLTYPE=none

in order to make IMAP compile u need to install openssl to this folder:

/usr/local/ssl

make shure u have the ssl libs accesible too in /usr/local/ssl/lib or /lib

after that IMAP should compile just fine with SSLTYPE=unix

参考:

http://www.phpbuilder.com/board/showthread.php?p=10944374

因为我的openssl是安装在/opt/mailserver/openssl上的,默认的是要查找/usr/local/ssl

所以要做如下链接

ln -s /opt/mailserver/openssl /usr/local/ssl


第二种方法

———————————————————————————————————————-

使用php的常见问题是:编译php时忘记添加某扩展,后来想添加扩展,但是因为安装php后又装了一些东西如PEAR等,不想删除目录重装,于是可以采用phpize。方法是:

要有与现有php完全相同的php压缩包 。我用的是php-5.2.6.tar.gz。展开后进入里面的ext/mcrypt目录 (里面是mcrypt的php扩展),然后执行/usr/local/php/bin/phpize。phpize是安装php时安装好的一个工具,如果你的机器没有安装phpize工具,那么可能还是要make,make install php,仅仅为了得到phpize.

执行完后,会发现当前目录下多了一些configure文件,如果没报错,则根据提示运行

./configure –with-php-config=/usr/local/php/bin/php-config

注意要先确保/usr/local/php/bin/php-config存在。

make

make install

Php代码

./configure –with-php-config=/usr/local/php/bin/php-config

make install 之后系统会提示你mcrypt.so文件所在的目录。根据php.ini中指示的extension_dir指向的目录中, 将其复制过去。修改php.ini,在最后添加一句extension=mcrypt.so

———————————————————————————————————————-

具体方法参考

http://bbs2.chinaunix.net/viewthread.php?tid=1472578

我的步骤如下

先进入php目录编译默认的Php5主要命令是

./configure

–prefix=/opt/mailserver/php5

–with-apxs2=/opt/mailserver/apache2/bin/apxs

–with-mysql=/opt/mailserver/mysql

–with-config-file-path=/opt/mailserver/php5

cp php.ini-production /opt/mailserver/php5/php.ini

然后安装imap模块和mbstring模块

cd ext

cd imap

/opt/mailserver/php5/bin/phpize //完成后,该目录会生成configure文件

./configure

–with-imap=/opt/mailserver/imap

–with-openssl

–with-php-config=/opt/mailserver/php5/bin/php-config

make

make install

从屏幕提示中得到模块文件的安装位置,将它拷贝到自己定制的extensions目录。

然后修改php.ini,在末尾加入extensions=/opt/mailserver/php5/extensions/imap.so

cd ext

cd mbstring

./configure

–enable-mbstring

–with-php-config=/opt/mailserver/php5/bin/php-config

make

make install

同上,拷贝模块文件后在php.ini中加入

然后重新启动apache2

安装:Postfixadmin

网络上橡皮老师有个postfixadmin安装讲座,采用的是2.1.1版本,该版本有个txt数据库脚本用来导入数据库,而2.2以上的版本不一样,所以安装步骤依据各个版本会有很大差别这里采用的版本是2.3版本,但是数据库生成部分不是按照INSTALL文件里的说明操作的。因为按照说明文件操作后,总是提示连接不上数据库,后来下载了2.1.1版本,从该版本中的txt脚本文件导入到数据库中,再按照下面的步骤进行操作。

cd /opt/mailserver

tar -xvzf ~/Desktop/postfixadmin-2.3.tar.gz

mv postfixadmin-2.3.1 postfixadmin

vi postfixadmin/config.inc.php

$CONF[‘configured’] = true;

$CONF[‘postfix_admin_url’] = ‘/postfixadmin’;

$CONF[‘database_type’] = ‘mysql’;

$CONF[‘database_host’] = ‘localhost’;

$CONF[‘database_user’] = ‘postfixadmin’;

$CONF[‘database_password’] = ‘postfixadmin’;

$CONF[‘database_name’] = ‘postfix’;

$CONF[‘domain_path’] = ‘YES’;

$CONF[‘domain_in_mailbox’] = ‘NO’;

$CONF[‘encrypt’] = ‘cleartext’;

$CONF[’emailcheck_resolve_domain] = ‘NO’;

打开/opt/mailserver/apache2/conf/httpd.conf文件,加入下面一行

Alias /postfixadmin /usr/share/postfixadmin

重启appache2服务

/opt/mailserver/apache2/bin/apachctl restart

在浏览器中打开http://localhost/postfixadmin/setup.php

如果没有错误,就直接生成数据库,并输入密码

如果提示错误,则需要解决错误。

通常的错误有

1.Php没有找到数据库支持。

2.无法连接数据库对应的sock

3.配置文件中的用户被拒绝访问数据库

4.配置文件中的用户没有权限创建数据库

第一个错误,通常是php编译的时候没有加入mysql支持

第二次错误,通常是sock文件目录权限设置错误,或者是sock文件路径定义的错误。

这个地方很复杂,php查找sock文件的配置可以再php.ini的文件中配置,而mysql启动时建立的sock文件路径可以再启动脚本中进行配置。一般sock所在文件夹用户和组都为

mysql,而且权限高于755或者直接设置成777,如果还是无法连接数据库,则应该检查

mysqld进程和mysqld_safe进程,保证这2个进程都被启动,特别在多个版本的mysql数据库被启动的时候。

第三个错误,通常是数据库的初始化错误。

这个地方也折腾了很长时间,对mysql删除用户和权限设置不熟悉,总是提示命令错误,无法创建用户,最后不得不采用重新安装数据库,

其实最彻底的方法就是重新安装mysql。

第四个错误,一般是因为配置文件的用户没有权限访问Postfix数据库,

手动进入mysqls数据库,加入下面的2句命令就可以了。

grant all privileges on postfix.* to postfixadmin@localhost identified by ‘postfixadmin’;

flush privileges;

如果setup.php那里没有错误,那么就可以设置系统密码,然后直接创建管理员账户了。

创建的系统密码,会自动生成hash值,并显示出来,将它替换config.inc.php文件中的

setup passwd项。

创建完管理员账号,打开http://localhost/postfixadmin/login

就可以开始管理账户了。

接下来开始进入配置文件

我基本上采用的是橡皮树老师的配置。

下面贴上配置文件

/etc/postfix/main.cf

#————-postfix install————————————————

queue_directory = /opt/mailserver/postfix/spool

command_directory = /opt/mailserver/postfix/sbin

daemon_directory = /opt/mailserver/postfix/daemon

data_directory = /opt/mailserver/postfix/caches

mail_owner = postfix

unknown_local_recipient_reject_code = 550

alias_database = hash:/etc/aliases

alias_maps = hash:/etc/aliases

debug_peer_level = 2

debug_peer_list = 127.0.0.1

debugger_command =

PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin

ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail

newaliases_path = /usr/bin/newaliases

mailq_path = /usr/bin/mailq

setgid_group = postdrop

html_directory = /opt/mailserver/postfix/html

manpage_directory = /opt/mailserver/postfix/man

sample_directory = /etc/postfix

readme_directory = /opt/mailserver/postfix/readme

#—————————————————————————-

#————————————-base———————————–

myhostname = mail.rcac.xhu.edu.cn

mydomain = rcac.xhu.edu.cn

myorigin = $mydomain

inet_interfaces = all

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain, ftp.$mydomain

myorigin = $mydomain

mydestination = $myhostname localhost localhost.$mydomain

mynetworks = 127.0.0.0/8

inet_interfaces = all

#—————————————————————————-

#————-vritual mailbox settings—————————————-

#virtual_minimum_uid = static:50

virtual_uid_maps = static:2001

virtual_gid_maps = static:2001

virtual_transport = virtual

virtual_mailbox_base = /opt/mailserver/postfix/spool/mailbox

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_alias_domains =

maildrop_destination_recipient_limit=1

maildrop_destination_concurrency_limit=1

#—————————————————————————-

#———————————–quota————————————

message_size_limit = 52428800

mailbox_size_limit = 209715200

virtual_mailbox_limit = 209715200

virtual_create_maildirsize = yes

virtual_mailbox_extended = yes

virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf

virtual_mailbox_limit_override = yes

virtual_maildir_limit_message = Sorry, the user’s maildir has overdrawn his disk space quota,please try again later.

virtual_overquota_bounce = yes

#—————————————————————————-

#————————————-SASL———————————–

broken_sasl_auth_clients = yes

smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination,permit

smtpd_sasl_auth_enable = yes

smtpd_sasl_type = dovecot

smtpd_sasl_path = /var/run/dovecot/auth-client

smtpd_sasl_local_domain = $myhostname

smtpd_sasl_security_options = noanonymous

smtpd_sasl_application_name = smtpd

smtpd_banner = $myhostname ESMTP “Version not Available”

#—————————————————————————-

/etc/postfix/mysql_virtual_alias_maps.cf

#—————————————————————————-

user = postfix

password = postfix

hosts = unix:/opt/mailserver/mysql/data/mysql/mysql.sock

dbname = postfix

table = alias

select_field = goto

where_field = address

#—————————————————————————-

mysql_virtual_domains_maps.cf

#—————————————————————————-

user = postfix

password = postfix

hosts = unix:/opt/mailserver/mysql/data/mysql/mysql.sock

dbname = postfix

table = domain

select_field = description

where_field = domain

#—————————————————————————-

mysql_virtual_mailbox_limit_maps.cf

#—————————————————————————-

user = postfix

password = postfix

#hosts = localhost

hosts = unix:/opt/mailserver/mysql/data/mysql/mysql.sock

dbname = postfix

table = mailbox

select_field = quota

where_field = username

#—————————————————————————-

mysql_virtual_mailbox_maps.cf

#—————————————————————————-

user = postfix

password = postfix

#hosts = localhost

hosts = unix:/opt/mailserver/mysql/data/mysql/mysql.sock

dbname = postfix

table = mailbox

select_field = maildir

where_field = username

#—————————————————————————-


/etc/dovecot/dovecot.conf

#—————————————————————————-

base_dir = /var/run/dovecot/

protocols = imap pop3

listen = *

auth_verbose=yes

auth_debug=yes

auth_debug_passwords=yes

mail_debug=yes

verbose_ssl=yes

disable_plaintext_auth = no

log_path = /var/log/dovecot.log

info_log_path = /var/log/dovecot-info.log

ssl = no

#ssl_disable = yes

mail_location = maildir:/opt/mailserver/postfix/spool/mailbox/%d/%n

auth default {


mechanisms = PLAIN LOGIN CRAM-MD5 DIGEST-MD5

passdb sql {


args=/etc/dovecot/dovecot-mysql.conf

}

userdb sql {


args=/etc/dovecot/dovecot-mysql.conf

}

user = root

socket listen {


client {


path = /var/run/dovecot/auth-client

mode = 0660

user=postfix

group=postfix

}

}

}

#—————————————————————————-

/etc/dovecot/dovecot-mysql.conf

#—————————————————————————-

driver = mysql

connect=host=/opt/mailserver/mysql/data/mysql/mysql.sock dbname=postfix user=postfix password=postfix

default_pass_scheme=plain

password_query = SELECT password FROM mailbox WHERE username = ‘%u’

user_query = SELECT maildir,2001 AS uid,2001 AS gid FROM mailbox WHERE username=’%u’

#—————————————————————————-


对于数据库的配置

直接下载postfixadmin 2.1.1版本,解压缩后有一个用户mysql的数据库生成语句写的txt文件直接导入到mysql即可,然后再根据上面所说的方法配置postfixadmin。

对于SquirrelMail 的配置比较简单

解压缩后,运行目录下的./configure就会进入配置文件

具体步骤如下

root@node8:/opt/mailserver/squirrelmail # ./configure

SquirrelMail Configuration : Read: config.php (1.4.0)

———————————————————

Main Menu —

1. Organization Preferences

2. Server Settings

3. Folder Defaults

4. General Options

5. Themes

6. Address Books

7. Message of the Day (MOTD)

8. Plugins

9. Database

10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on

S Save data

Q Quit

Command >>

选择1

Command >> 1

SquirrelMail Configuration : Read: config.php (1.4.0)

———————————————————

Organization Preferences

1. Organization Name : rcac

2. Organization Logo : ../images/sm_logo.png

3. Org. Logo Width/Height : (308/111)

4. Organization Title : rcac

5. Signout Page :

6. Top Frame : _top

7. Provider link : http://rcac.xhu.edu.cn/postfixadmin/users

8. Provider name : change password

R Return to Main Menu

C Turn color on

S Save data

Q Quit

Command >>

修改Organization Name Organization Title 返回

选择2

Command >> 2

SquirrelMail Configuration : Read: config.php (1.4.0)

———————————————————

Server Settings

General

——-

1. Domain : rcac.xhu.edu.cn

2. Invert Time : false

3. Sendmail or SMTP : SMTP

A. Update IMAP Settings : localhost:143 (dovecot)

B. Update SMTP Settings : localhost:25

R Return to Main Menu

C Turn color on

S Save data

Q Quit

修改域名,和服务器类型,此处是smtp,修改A对应的imap软件名以及端口等,返回

选择4修改全局设置

Command >> 4

SquirrelMail Configuration : Read: config.php (1.4.0)

———————————————————

General Options

1. Data Directory : /srv/www/rcac/webmail/attachments/

2. Attachment Directory : /srv/www/rcac/webmail/data/

3. Directory Hash Level : 0

4. Default Left Size : 150

5. Usernames in Lowercase : false

6. Allow use of priority : true

7. Hide SM attributions : false

8. Allow use of receipts : true

9. Allow editing of identity : true

Allow editing of name : true

Remove username from header : false

10. Allow server thread sort : false

11. Allow server-side sorting : false

12. Allow server charset search : true

13. Enable UID support : true

14. PHP session name : SQMSESSID

15. Location base :

16. Only secure cookies if poss. : true

17. Disable secure forms : false

18. Page referal requirement :

R Return to Main Menu

C Turn color on

S Save data

Q Quit

Command >>

修改Data Directory,Attachment Directory,这个目录的权限需要设置成777

最后选择S保存推出。

此时所有参数都是写在config.php文件中,为了邮件用户能够通过webmail改密码,需要修改config.php文件中的下面2个参数

$provider_uri = ‘http://rcac.xhu.edu.cn/postfixadmin/users’; //到postfixadmin的接口。

$provider_name = ‘change password’;

接下来

在目录/srv/www/rcac/处新建2个连接

ln -s /opt/mailserver/SquirrelMail /srv/www/rcac/webmail

ln -s /opt/mailserver/postfixadmin /srv/www/rcac/postfixadmin

然后再httpd.conf中将/srv/www/rcac/加到根目录

访问主页下的weimail即进入登陆界面,填写在postfixadmin中已经定义的帐户和密码即可登陆web邮箱了。


总结:

此次配置主要有如下难点

1. Mysql数据库的导入,虽然原理很简单,但是总是提示用户已经存在,原因是采用2.2.3的方法加入建立的数据库,后来又想通过2.1.1的方法来导入,最后想删除用户却总是删除不了用户信息,不得不重新安装mysql

2. Php5总是连接不上mysql,提示无法连接到sock文件,或者是用户没有权限,最终查到原因是mysql的启动不完整,以及my.cnf配置文件中的sock文件小错误。

3. Php5的imap模块的安装,这个地方总是会出现编译错误,找不到库文件。

4. Postfix中关于mysql的sock路径指定参数,Google了很长时间,才找到这个配置参数。

否则总是在取数据库那里出错,因为它默认利用的是/tmp/mysql.sock

5. postfix uid和gid最好要大于100或更高,否则虽然安装橡皮树老师设置的方法,最后还是不能成功,我最后采用了2001这个很高的uid和gid.


参考:

postfix系统用户smtp认证超简单配置

http://www.redlinux.org/read.php?tid-481.html

openssl+cyrus-sasl2+Berkeley DB+postfix

特点:

1) 本地系统用户

2) 不使用数据库

3) 使用dovecot做smtp认证,简单实用

4) 安装配置过程简单


linux下编译postfix时,使其支持mysql,ldap,sasl,ssl的脚本

http://lovesea.blog.51cto.com/382446/102732

redhat4.0up2+postfix+dovecot (源码安装) 实现虚拟用户,SMTP认证,POP3

http://hi.baidu.com/suping/blog/item/a03b793e5664ee3170cf6cc1.html

postfix+sasl+mysql+dovecot+apache+php 邮件服务器成功配置笔记

http://oldhand.3ren.com/profiles/blog/show?id=2795388334018897%3ABlogPost%3A2888407217226852

Exmail论坛

http://www.extmail.org/forum/

linux 用icc编译mysql

http://www.boobooke.com/bbs/thread-2999-1-1.html

linux下编译安装postfix+mysql+dovecot+postfixadmin

http://www.nginxs.com/linux/69.html

OpenLdap 与 BerkeleyDB 安装过程

http://blog.chinaunix.net/u1/56685/showart_1830385.html

Linux Apache2 + mysql5 + php5安装详解

http://linux.chinaunix.net/techdoc/database/2008/03/04/981250.shtml

邮件系统的安装

http://bbs.chinaunix.net/viewthread.php?tid=987344


Php imap的安装

http://hi.baidu.com/chenshake/blog/item/8266d4eae70d4cd6d439c9f9.html

http://www.phpbuilder.com/board/showthread.php?p=10944374


postfixadmin

http://www.linuxmail.info/postfix-admin-howto-centos-5/


php扩展的安装

http://bbs2.chinaunix.net/viewthread.php?tid=1485530


实用命令:利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密

http://www.cppblog.com/sleepwom/archive/2010/01/05/104818.html

Trouble with virtual delivery

http://archives.neohapsis.com/archives/postfix/2005-04/0147.html


用SMTP/POP3访问邮箱暨SMTP/POP3原理

http://blog.163.com/sq-shi/blog/static/9310552120094173533027/


postfix virtual MySQL

hosts = unix:/var/run/mysqld/mysqld.sock

http://www.postfixvirtual.net/postfixconf.html


Trouble with virtual delivery

http://archives.neohapsis.com/archives/postfix/2005-04/0147.html


postfix+dovecot+postfixadmin+mysql认证

http://bbs.chinaunix.net/viewthread.php?tid=1638787


RHEL4上安装基于postfix的全功能邮件服务器(全部使用目前最新源码包构建)

http://www.chinaunix.net/jh/14/987344.html


apache 动态编译 静态编译

http://hi.baidu.com/sheshi37c/blog/item/0455247fc7c1450029388a1e.html


Postfix电子邮件系统完整安装教程

http://www.info110.com/map.asp?pid=14824


ExtMail Solution HOWTO for Linux

http://www.extmail.org/docs/extmail_solution_linux/#extmail


How to set up a mail server on a GNU / Linux system

Ubuntu + Postfix + Courier IMAP + MySQL + Amavisd-new +

SpamAssassin + ClamAV + SASL + TLS + SquirrelMail/Roundcube + Postgrey

http://flurdy.com/docs/postfix/


Mail server HOWTO

Postfix + Dovecot +Mysql+TLS/SSL+postgrey+DSPAM

http://johnny.chadda.se/article/mail-server-howto-postfix-and-dovecot-with-mysql-and-tlsssl-postgrey-and-dspam/


Creating a Linux Mail Server

(Postfix, Procmail, Fetchmail, SpamBayes, Courier-imap, Mutt, SquirrelMail)

http://www.hypexr.org/linux_mail_server.php


Secure Virtual Mailserver HOWTO

Postfix + OpenLDAP + Dovecot + Jamm + SASL + SquirrelMail

http://wanderingbarque.com/howtos/mailserver/mailserver.html

Debian Mail Server Setup with Postfix + Dovecot + SASL + Squirrel Mail

http://www.debianadmin.com/debian-mail-server-setup-with-postfix-dovecot-sasl-squirrel-mail.html


How to setup Relay host in mail server

http://webmail.tm.net.my/info/smtp-proxy.html



版权声明:本文为linfengfeiye原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。