centos7.2下搭建postfix++dovecot+courier-authlib+extmail邮件收发系统

以前搭建过一次,由于不熟悉,断断续续折腾了半个月

在此记录一下,搭建全过程使用root账号,中间有一些错误调试的,都给忽略了,这里只给出最的配置

在文章最后面会有一些错误调试的记录

#########################################

整个 extmail邮件系统,是由多个软件构成的:

ExtMan           Web帐户管理后台(含mailgraph_ext 图形日志分析) ,web管理

ExtMail          WebMail(perl 程序) ,web支持

Postfix          SMTP服务器,邮件传输代理(MTA) ,收发邮件

Maildrop         邮件投递代理(MDA)

Courier-imap     IMAP和POP3 服务器

Cyrus-sasl2      标准的SASL实现库,可以支持Courier Cyrus SMTP认证库

Courier-authlib  负责courier-imap,maildrop的认证 Courier 数据认证库(mysql)

MySQL            数据库,储存虚拟(域|用户|别名)等信息.

################################

postfix: 收发邮件

dovecot: 投递邮件

courier-authlib: 身份验证

mysql 存储账号信息

extmail: web支持

extman: web管理

#################################

主要就是安装几个大块的软件:

  1. 数据库
  2. postfix
  3. courier-authlib
  4. dovecot
  5. extmai+extman

系统版本:

#cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

#uname -a

Linux HOST_107_centos 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

准备工作:

[root@HOST_107_centos ~]# getenforce

Disabled

这里如果不是 Disabled , 可以用setenfore=0命令把它设置为Disabled

centos 7.2 默认是不直接用iptables的,我这里开了firewalld 服务,所以直接把端口给开了

[root@HOST_107_centos ~]# firewall-cmd --add-port=110/tcp

[root@HOST_107_centos ~]# firewall-cmd --add-port=110/tcp --permanent

[root@HOST_107_centos ~]# firewall-cmd --add-port=25/tcp

[root@HOST_107_centos ~]# firewall-cmd --add-port=25/tcp --permanent

--permanent 参数是为了使firewalld重启之后,这两条规则依然生效,如果不执行带--permanent参数的命令,重启firewalld 之后,这两条命令就无效了

一.安装数据库:

#yum -y install mariadb.x86_64 mariadb-server.x86_64 mariadb-devel.x86_64

由于CentOS7.2的系统没有mysql数据库了,安装mariadb,不行后面再换(到最后发现mariadb也是可以用的,没什么影响)

启动数据库:

[root@HOST_107_centos mailbox]# service mariadb start

Redirecting to /bin/systemctl start  mariadb.service

[root@HOST_107_centos mailbox]#

检查数据库是否启动成功,发现OK了,进程如下:

[root@HOST_107_centos mailbox]# ps aux | grep mysql

mysql    22791  0.0  0.0   9512  1500 ?        Ss   14:48   0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr

mysql    22947  2.1  1.1 920572 95864 ?        Sl   14:48   0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock

root     22984  0.0  0.0 112660   960 pts/0    R+   14:48   0:00 grep --color mysql

登录数据库:

[root@HOST_107_centos mailbox]# mysql -u root

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 5.5.52-MariaDB MariaDB Server

MariaDB [mysql]> delete from user where host like 'vm%';

Query OK, 2 rows affected (0.00 sec)

MariaDB [mysql]> delete from user where host='localhost' and user='root';

Query OK, 1 row affected (0.00 sec)

MariaDB [mysql]> delete from user where host='::1' and user='root';

Query OK, 1 row affected (0.00 sec)

MariaDB [mysql]> delete from user where host='localhost' and password='';

Query OK, 1 row affected (0.00 sec)

MariaDB [mysql]> update user set  password=password('ppppp902') where user='root';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [mysql]> flush privileges;

Query OK, 0 rows affected (0.00 sec)

上面的操作删除了一些无用的账号,给剩下的root账号设置密码,改了之后只能这样# mysql -u root  -p -h 127.0.0.1  用密码登录

安装一些必须的插件和库:

# yum install gcc gcc-c++ openssl openssl-devel db4-devel ntpdate  bzip2 php-mysql cyrus-sasl-md5 perl-GD perl-DBD-MySQL perl-GD perl-CPAN perl-CGI perl-CGI-Session cyrus-sasl-lib cyrus-sasl-plain cyrus-sasl cyrus-sasl-devel libtool-ltdl-devel telnet mail libicu-devel  -y

卸载系统自带的postfix:yum remove postfix

添加用户和组:

groupadd -g 2525 postfix

useradd -g postfix -u 2525 -s /sbin/nologin -M postfix

groupadd -g 2526 postdrop

useradd -g postdrop -u 2526 -s /sbin/nologin -M postdrop

这里把用户id和组id设置为2525和2526是因为后面的extman/webman.cf, postfix/main.cf这两个文件默认都用了这两个数字,不用改来改去那么麻烦

二.解压安装postfix:

tar xf postfix-3.2-20160327.tar.gz

cd postfix-3.2-20160327

安装之前先看一下目录下面有没有对应的头文件和库文件, makefile的时候要用到,如果没有这些文件,编译安装会出错的:

[root@HOST_107_centos postfix-3.2-20160327]# ls /usr/include/mysql/

auth_dialog_client.h  ma_dyncol.h     my_config_x86_64.h   my_net.h         mysql_time.h          plugin_auth.h             service_logger.h            sql_common.h

client_plugin.h       m_ctype.h       my_dbug.h            my_pthread.h     mysql_version.h       plugin_ftparser.h         service_my_snprintf.h       sql_state.h

decimal.h             m_string.h      my_decimal_limits.h  mysql_com.h      my_sys.h              plugin.h                  service_progress_report.h   sslopt-case.h

errmsg.h              my_alloc.h      my_dir.h             mysqld_ername.h  my_valgrind.h         private                   services.h                  sslopt-longopts.h

handler_ername.h      my_attribute.h  my_getopt.h          mysqld_error.h   my_xml.h              psi                       service_thd_alloc.h         sslopt-vars.h

handler_state.h       my_compiler.h   my_global.h          mysql_embed.h    plugin_audit.h        service_debug_sync.h      service_thd_wait.h          typelib.h

keycache.h            my_config.h     my_list.h            mysql.h          plugin_auth_common.h  service_kill_statement.h  service_thread_scheduler.h

[root@HOST_107_centos postfix-3.2-20160327]#

[root@HOST_107_centos postfix-3.2-20160327]# ls /usr/include/sasl/

hmac-md5.h  md5global.h  md5.h  prop.h  sasl.h  saslplug.h  saslutil.h

[root@HOST_107_centos postfix-3.2-20160327]#

[root@HOST_107_centos postfix-3.2-20160327]# ls /usr/lib64/mysql/

INFO_BIN  INFO_SRC  libmysqlclient_r.so  libmysqlclient.so  libmysqlclient.so.18  libmysqlclient.so.18.0.0  mysqlbug  mysql_config  plugin

[root@HOST_107_centos postfix-3.2-20160327]#

[root@HOST_107_centos postfix-3.2-20160327]# ls /usr/lib64/sasl2/

libanonymous.so    libanonymous.so.3.0.0  libcrammd5.so.3      libdigestmd5.so    libdigestmd5.so.3.0.0  liblogin.so.3      libplain.so    libplain.so.3.0.0  libsasldb.so.3

libanonymous.so.3  libcrammd5.so          libcrammd5.so.3.0.0  libdigestmd5.so.3  liblogin.so            liblogin.so.3.0.0  libplain.so.3  libsasldb.so       libsasldb.so.3.0.0

[root@HOST_107_centos postfix-3.2-20160327]#

postfix编译和安装(这里-I指定的头文件和库,就是上面ls查看的那些,像mysql这些如果手动安装指定了不同的目录,这里要用-I指定对应的目录才行):

[root@HOST_107_centos postfix-3.2-20160327]#make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS ' 'AUXLIBS=-L/usr/lib64/mysql -lmysqlclient -lz -lrt -lm -L/usr/lib64/sasl2 -lsasl2 -lssl –lcrypto'

[root@HOST_107_centos postfix-3.2-20160327]#make –j 4

[root@HOST_107_centos postfix-3.2-20160327]#make install

-j 4 是指定编译的时候用4个核,多核的系统可以指定多个核,编译会快一点

安装过程要设置一些目录:安装的时候,就修改postfix的临时目录,别的全部回车用默认设置

Please specify the prefix for installed file names. Specify this ONLY

if you are building ready-to-install packages for distribution to OTHER

machines. See PACKAGE_README for instructions.

install_root: [/]

Please specify a directory for scratch files while installing Postfix. You

must have write permission in this directory.

tempdir: [/data/mailbox/software/postfix-3.2-20160327] /tmp/mailbox

Please specify the final destination directory for installed Postfix

configuration files.

config_directory: [/etc/postfix]

Please specify the final destination directory for installed Postfix

pppppistrative commands. This directory should be in the command search

path of pppppstrative users.

command_directory: [/usr/sbin]

Please specify the final destination directory for installed Postfix

daemon programs. This directory should not be in the command search path

of any users.

daemon_directory: [/usr/libexec/postfix]

Please specify the final destination directory for Postfix-writable

data files such as caches or random numbers. This directory should not

be shared with non-Postfix software.

data_directory: [/var/lib/postfix]

Please specify the final destination directory for the Postfix HTML

files. Specify "no" if you do not want to install these files.

html_directory: [no]

Please specify the owner of the Postfix queue. Specify an account with

numerical user ID and group ID values that are not used by any other

accounts on the system.

mail_owner: [postfix]

Please specify the final destination pathname for the installed Postfix

mailq command. This is the Sendmail-compatible mail queue listing command.

mailq_path: [/usr/bin/mailq]

Please specify the final destination directory for the Postfix on-line

manual pages. You can no longer specify "no" here.

manpage_directory: [/usr/local/man]

Please specify the final destination pathname for the installed Postfix

newaliases command. This is the Sendmail-compatible command to build

alias databases for the Postfix local delivery agent.

newaliases_path: [/usr/bin/newaliases]

Please specify the final destination directory for Postfix queues.

queue_directory: [/var/spool/postfix]

Please specify the final destination directory for the Postfix README

files. Specify "no" if you do not want to install these files.

readme_directory: [no]

Please specify the final destination pathname for the installed Postfix

sendmail command. This is the Sendmail-compatible mail posting interface.

sendmail_path: [/usr/sbin/sendmail]

Please specify the group for mail submission and for queue management

commands. Specify a group name with a numerical group ID that is

not shared with other accounts, not even with the Postfix mail_owner

account. You can no longer specify "no" here.

setgid_group: [postdrop]

Please specify the final destination directory for Postfix shared-library

files.

shlib_directory: [no]

Please specify the final destination directory for non-executable files

that are shared among multiple Postfix instances, such as postfix-files,

dynamicmaps.cf, as well as the multi-instance template files main.cf.proto

and master.cf.proto.

meta_directory: [/etc/postfix]

修改postfix相关的目录的属性:

[root@HOST_107_centos mailbox]## chown postfix.postdrop /tmp/mailbox

[root@HOST_107_centos mailbox]## chown postfix.postdrop /tmp/mailbox -R

[root@HOST_107_centos mailbox]# chown postfix.postfix /var/lib/postfix/

[root@HOST_107_centos mailbox]# chown postfix.postfix /var/lib/postfix/  -R

[root@HOST_107_centos mailbox]#

[root@HOST_107_centos mailbox]# chown postfix.postfix /var/spool/postfix/private/

[root@HOST_107_centos mailbox]# chown postfix.postfix /var/spool/postfix/private/  -R

[root@HOST_107_centos mailbox]#

[root@HOST_107_centos mailbox]# chown postfix.postdrop /var/spool/postfix/public/

[root@HOST_107_centos mailbox]# chown postfix.postdrop /var/spool/postfix/public/ -R

[root@HOST_107_centos mailbox]#

注意public目录的postdrop的,如果搞错了,启动postfix的时候会有报警

启动postfix:

[root@HOST_107_centos mailbox]# postfix start

postfix/postfix-script: starting the Postfix mail system

启用sasl认证:

[root@HOST_107_centos software]# service saslauthd start

Redirecting to /bin/systemctl start  saslauthd.service

生成二进制的库:(干嘛用的???)

[root@HOST_107_centos mailbox]# newaliases

修改/etc/postfix/main.cf:

前面我们设置的一些目录,有些就在这里,如mailq_path = /usr/bin/mailq 等

完整的main.cf的文件如下:

compatibility_level = 2

queue_directory = /var/spool/postfix

command_directory = /usr/sbin

daemon_directory = /usr/libexec/postfix

data_directory = /var/lib/postfix

mail_owner = postfix

#这里是域名

myhostname = mail.pxxxd.cn

mydomain = pxxxd.cn

myorigin = pxxxd.cn

inet_interfaces = all

mydestination = $myhostname, localhost.$mydomain, localhost

#网络用内网这个段和本机,本机的段注意是127.0.0.0,不是127.0.0.1

mynetworks = 127.0.0.0/8,172.28.12.0/24

alias_maps = hash:/etc/aliases, nis:mail.aliases

alias_database = hash:/etc/aliases

home_mailbox = Maildir/

mail_spool_directory = /var/spool/mail

debug_peer_level = 2

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 = /var/www/postfix_html

manpage_directory = /usr/local/man

sample_directory = /etc/postfix

readme_directory = no

inet_protocols = ipv4

meta_directory = /etc/postfix

shlib_directory = no

smtputf8_enable = no

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,reject_rbl_client multi.uribl.com,reject_rbl_client dsn.rfc-ignorant.org,reject_rbl_client dul.dnsbl.sorbs.net,reject_rbl_client list.dsbl.org,reject_rbl_client sbl-xbl.spamhaus.org,reject_rbl_client bl.spamcop.net,reject_rbl_client dnsbl.sorbs.net,reject_rbl_client cbl.abuseat.org,reject_rbl_client ix.dnsbl.manitu.net,reject_rbl_client combined.rbl.msrbl.net,reject_rbl_client rabl.nuclearelephant.com,reject_rbl_client cblless.anti-spam.org.cn

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = $mydomain

smtpd_sasl_security_options = noanonymous

smtpd_banner = Welcome to our $myhostname SMTP

virtual_mailbox_base = /var/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_domains =

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

virtual_uid_maps = static:2525

virtual_gid_maps = static:2525

virtual_transport = virtual

smtpd_helo_required = yes

disable_vrfy_command = yes

strict_rfc821_envelopes = yes

invalid_hostname_reject_code = 554

multi_recipient_bounce_reject_code = 554

non_fqdn_reject_code = 554

relay_domains_reject_code = 554

unknown_address_reject_code = 554

unknown_client_reject_code = 554

unknown_hostname_reject_code = 554

unknown_local_recipient_reject_code = 554

unknown_relay_recipient_reject_code = 554

unknown_virtual_alias_reject_code = 554

unknown_virtual_mailbox_reject_code = 554

unverified_recipient_reject_code = 554

unverified_sender_reject_code = 554

添加DNS解析:

这里用的是阿里云的DNS,到对应的域名下去添加解析

A mail 12x.13x.14x.63

A pop 12x.13x.14x.63

A pop3 12x.13x.14x.63

A smtp 12x.13x.14x.63

MX @ mail.pxxxd.cn

postfix测试:

sh-3.2# telnet mail.xxxxd.cn 25

Trying 12x.13x.14x.63...

Connected to mail.pxxxd.cn.

Escape character is '^]'.

220 mail.pxxxd.cn ESMTP Postfix

ehlo localhost

250-mail.pxxxd.cn

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250-DSN

250 SMTPUTF8

mail from:root@localhost

250 2.1.0 Ok

rcpt to:qing@localhost

550 5.1.1 <xxxxang@localhost>: Recipient address rejected: User unknown in local recipient table

rcpt to:xxxxang@pxxxd.cn.cn

454 4.7.1 <xxxxang@pxxxd.cn.cn>: Relay access denied

测试失败,可以tail –f /var/log/maillog 去调试,这里先不管

查看postfix是否则支持支持cyrus风格的sasl认证:

[root@HOST_107_centos ~]# postconf -a

cyrus

dovecot

这里显示支持

添加sasl的认证方式:

一般情况下这个文件是没有的,创建文件vim /usr/lib64/sasl2/smtpd.conf,并添加两行:

pwcheck_method:saslauthd

mech_list:PLAIN LOGIN

保存之后,重新加载postfix的配置:

[root@HOST_107_centos ~]# postfix reload

postfix/postfix-script: refreshing the Postfix mail system

再次telnet,发现比刚才多了两行(红色字体),说明配置成功:

sh-3.2# telnet mail.pxxxd.cn 25

Trying 12x.13x.14x.63...

Connected to mail.pxxxd.cn.

Escape character is '^]'.

220 mail.pxxxd.cn ESMTP Postfix

ehlo localhost

250-mail.pxxxd.cn

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH PLAIN LOGIN

250-AUTH=PLAIN LOGIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250-DSN

250 SMTPUTF8

安装courier-unicode:

tar xf courier-unicode-1.2.tar.bz2

cd courier-unicode-1.2

./configure

make –j4 && make install

安装courier-authlib:

tar xf courier-authlib-0.66.4.tar.bz2

cd courier-authlib-0.66.4/

[root@HOST_107_centos courier-authlib-0.66.4]# mkdir /usr/local/courier-authlib/

[root@HOST_107_centos courier-authlib-0.66.4]#./configure --prefix=/usr/local/courier-authlib --sysconfdir=/etc --without-authpam --without-authshadow --without-authvchkpw --without-authpgsql --with-authmysql --with-mysql-libs=/usr/lib64/mysql --with-mysql-includes=/usr/include/mysql --with-redhat --with-authmysqlrc=/etc/authmysqlrc --with-authdaemonrc=/etc/authdaemonrc --with-mailuser=postfix --with-mailgroup=postfix

[root@HOST_107_centos courier-authlib-0.66.4]make –j4 && make install

添加courier启动脚本,并设置开机启动

[root@HOST_107_centos courier-authlib-0.66.4]cp courier-authlib.sysvinit /etc/init.d/courier-authlib

[root@HOST_107_centos courier-authlib-0.66.4] chmod +x /etc/init.d/courier-authlib

[root@HOST_107_centos courier-authlib-0.66.4] chkconfig --add courier-authlib

[root@HOST_107_centos courier-authlib-0.66.4] chkconfig courier-authlib on

[root@HOST_107_centos courier-authlib-0.66.4] echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf

[root@HOST_107_centos courier-authlib-0.66.4] ldconfig –v | grep couri

[root@HOST_107_centos courier-authlib-0.66.4] service courier-authlib start

[root@HOST_107_centos ~]cp /etc/authdaemonrc.dist  /etc/authdaemonrc

[root@HOST_107_centos ~]cp /etc/authmysqlrc.dist  /etc/authmysqlrc

[root@HOST_107_centos conf.d]# cat /etc/authmysqlrc | grep -v ^#

MYSQL_SERVER        localhost

MYSQL_USERNAME         extmail

MYSQL_PASSWORD         extmail

MYSQL_SOCKET         /var/lib/mysql/mysql.sock

MYSQL_PORT            3306

MYSQL_OPT        0

MYSQL_DATABASE           extmail

MYSQL_USER_TABLE       mailbox

MYSQL_CRYPT_PWFIELD crypt

MYSQL_CLEAR_PWFIELD password

MYSQL_UID_FIELD           2525

MYSQL_GID_FIELD           2526

MYSQL_LOGIN_FIELD       username

MYSQL_HOME_FIELD       concat('/var/mailbox',homedir)

MYSQL_NAME_FIELD       name

MYSQL_MAILDIR_FIELD   concat('/var/mailbox',homedir)

认证用mysql的:

[root@HOST_107_centos conf.d]# cat /etc/authdaemonrc | grep -v ^#

authmodulelist="authmysql"

authmodulelistorig="authmysql"

daemons=10

authdaemonvar=/usr/local/courier-authlib/var/spool/authdaemon

DEBUG_LOGIN=0

DEFAULTOPTIONS=""

LOGGEROPTS=""

安装dovecot:

[root@HOST_107_centos ~]#yum install -y  dovecot dovecot-mysql

[root@HOST_107_centos dovecot]#cd /etc/dovecot

[root@HOST_107_centos dovecot]#cat dovecot.conf | grep -v ^#

protocols = imap pop3 lmtp

disable_plaintext_auth = no

ssl_disable = no

listen = *

!include conf.d/*.conf

[root@HOST_107_centos dovecot]# cd conf.d/

[root@HOST_107_centos conf.d]# cat 10-auth.conf | grep -v ^#

auth_mechanisms = plain

!include auth-system.conf.ext

[root@HOST_107_centos conf.d]# cat 10-mail.conf | grep -v ^#

mail_location = maildir:/var/mailbox/%d/%n/Maildir

mbox_write_locks = fcntl

[root@HOST_107_centos conf.d]# cat 10-logging.conf  | grep -v ^#

debug_log_path = /var/log/dovecot.log

auth_debug = yes

auth_debug_passwords = yes

mail_debug = yes

root@HOST_107_centos conf.d]# cp auth-sql.conf.ext auth-sql.conf

[root@HOST_107_centos conf.d]# cat auth-sql.conf | grep -v ^#

passdb {

driver = sql

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

}

userdb {

driver = sql

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

}

root@HOST_107_centos conf.d]# cat /etc/dovecot/dovecot-mysql.conf | grep -v ^#

driver = mysql

connect = host=localhost dbname=extmail user=root password=ppppp@XXX902.

default_pass_scheme = CRYPT

password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = '%u'

user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHERE username = '%u'

extmail and extman 安装:

root@HOST_107_centos software]# tar -xf extmail-1.2.tar.gz

root@HOST_107_centos software]# tar xf extman-1.1.tar.gz

root@HOST_107_centos software]# mkdir /var/www/extsuite/extmail/ -p

root@HOST_107_centos software]# mkdir /var/www/extsuite/extman/ -p

root@HOST_107_centos software]# rsync -al extmail-1.2/* /var/www/extsuite/extmail/

root@HOST_107_centos software]# rsync -al extman-1.1/* /var/www/extsuite/extman/

[root@HOST_107_centos software]# cd /var/www/extsuite/extmail/

root@HOST_107_centos extmail]# cp webmail.cf.default webmail.cf

[root@HOST_107_centos extmail]# cat webmail.cf | grep -v ^#

SYS_CONFIG = /var/www/extsuite/extmail/

SYS_LANGDIR = /var/www/extsuite/extmail/lang

SYS_TEMPLDIR = /var/www/extsuite/extmail/html

SYS_HTTP_CACHE = 0

SYS_SMTP_HOST = 127.0.0.1

SYS_SMTP_PORT = 25

SYS_SMTP_TIMEOUT = 5

SYS_SPAM_REPORT_ON = 0

SYS_SPAM_REPORT_TYPE = dspam

SYS_SHOW_WARN = 0

SYS_IP_SECURITY_ON = 1

SYS_PERMIT_NOQUOTA = 1

SYS_SESS_DIR = /tmp

SYS_UPLOAD_TMPDIR = /tmp

SYS_LOG_ON = 1

SYS_LOG_TYPE = syslog

SYS_LOG_FILE = /var/log/extmail.log

SYS_SESS_TIMEOUT = 0

SYS_SESS_COOKIE_ONLY = 1

SYS_USER_PSIZE = 10

SYS_USER_SCREEN = auto

SYS_USER_LANG = zh_CN

SYS_APP_TYPE = WebMail

SYS_USER_TEMPLATE = default

SYS_USER_CHARSET = utf-8

SYS_USER_TRYLOCAL = 1

SYS_USER_TIMEZONE = +0800

SYS_USER_CCSENT = 1

SYS_USER_SHOW_HTML = 1

SYS_USER_COMPOSE_HTML = 1

SYS_USER_CONV_LINK =1

SYS_USER_ADDR2ABOOK = 1

SYS_MESSAGE_SIZE_LIMIT = 5242880

SYS_MIN_PASS_LEN = 2

SYS_MFILTER_ON = 1

SYS_NETDISK_ON = 1

SYS_SHOW_SIGNUP = 1

SYS_DEBUG_ON = 1

SYS_AUTH_TYPE = mysql

SYS_MAILDIR_BASE = /var/mailbox

SYS_AUTH_SCHEMA = virtual

SYS_CRYPT_TYPE = md5crypt

SYS_MYSQL_USER = root

SYS_MYSQL_PASS = ppppp@XXX902.

SYS_MYSQL_DB = extmail

SYS_MYSQL_HOST = localhost

SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock

SYS_MYSQL_TABLE = mailbox

SYS_MYSQL_ATTR_USERNAME = username

SYS_MYSQL_ATTR_DOMAIN = domain

SYS_MYSQL_ATTR_PASSWD = password

SYS_MYSQL_ATTR_CLEARPW = clearpwd

SYS_MYSQL_ATTR_QUOTA = quota

SYS_MYSQL_ATTR_NDQUOTA = netdiskquota

SYS_MYSQL_ATTR_HOME = homedir

SYS_MYSQL_ATTR_MAILDIR = maildir

SYS_MYSQL_ATTR_DISABLEWEBMAIL = disablewebmail

SYS_MYSQL_ATTR_DISABLENETDISK = disablenetdisk

SYS_MYSQL_ATTR_DISABLEPWDCHANGE = disablepwdchange

SYS_MYSQL_ATTR_ACTIVE = active

SYS_MYSQL_ATTR_PWD_QUESTION = question

SYS_MYSQL_ATTR_PWD_ANSWER = answer

SYS_LDAP_BASE = o=extmailAccount,dc=example.com

SYS_LDAP_RDN = cn=Manager,dc=example.com

SYS_LDAP_PASS = secret

SYS_LDAP_HOST = localhost

SYS_LDAP_ATTR_USERNAME = mail

SYS_LDAP_ATTR_DOMAIN = virtualDomain

SYS_LDAP_ATTR_PASSWD = userPassword

SYS_LDAP_ATTR_CLEARPW = clearPassword

SYS_LDAP_ATTR_QUOTA = mailQuota

SYS_LDAP_ATTR_NDQUOTA = netdiskQuota

SYS_LDAP_ATTR_HOME = homeDirectory

SYS_LDAP_ATTR_MAILDIR = mailMessageStore

SYS_LDAP_ATTR_DISABLEWEBMAIL = disablewebmail

SYS_LDAP_ATTR_DISABLENETDISK = disablenetdisk

SYS_LDAP_ATTR_DISABLEPWDCHANGE = disablePasswdChange

SYS_LDAP_ATTR_ACTIVE = active

SYS_LDAP_ATTR_PWD_QUESTION = question

SYS_LDAP_ATTR_PWD_ANSWER = answer

SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket

SYS_G_ABOOK_TYPE = file

SYS_G_ABOOK_LDAP_HOST = localhost

SYS_G_ABOOK_LDAP_BASE = ou=AddressBook,dc=example.com

SYS_G_ABOOK_LDAP_ROOTDN = cn=Manager,dc=example.com

SYS_G_ABOOK_LDAP_ROOTPW = secret

SYS_G_ABOOK_LDAP_FILTER = objectClass=OfficePerson

SYS_G_ABOOK_FILE_PATH = /var/www/extsuite/extmail/globabook.cf

SYS_G_ABOOK_FILE_LOCK = 1

SYS_G_ABOOK_FILE_CONVERT = 0

SYS_G_ABOOK_FILE_CHARSET = utf-8

[root@HOST_107_centos extmail]# cd ../extman/

[root@HOST_107_centos extman]#

[root@HOST_107_centos extman]#

[root@HOST_107_centos extman]# cp webman.cf.default webman.cf

[root@HOST_107_centos extman]# cat webman.cf | grep -v ^#

SYS_CONFIG = /var/www/extsuite/extman/

SYS_LANGDIR = /var/www/extsuite/extman/lang

SYS_TEMPLDIR = /var/www/extsuite/extman/html

SYS_MAILDIR_BASE = /var/mailbox

SYS_SHOW_WARN = 0

SYS_SESS_DIR = /tmp/

SYS_CAPTCHA_ON = 0

SYS_CAPTCHA_KEY = r3s9b6a7

SYS_CAPTCHA_LEN = 8

SYS_PURGE_DATA = 0

SYS_PSIZE = 20

SYS_APP_TYPE = ExtMan

SYS_TEMPLATE_NAME = default

SYS_DEFAULT_EXPIRE = 1y

SYS_GROUPMAIL_SENDER = postmaster@extmail.org

SYS_DEFAULT_SERVICES = webmail,smtpd,smtp,pop3,netdisk

SYS_ISP_MODE = no

SYS_DOMAIN_HASHDIR = yes

SYS_DOMAIN_HASHDIR_DEPTH = 2x2

SYS_USER_HASHDIR = yes

SYS_USER_HASHDIR_DEPTH = 2x2

SYS_MIN_UID = 500

SYS_MIN_GID = 100

SYS_DEFAULT_UID = 2525

SYS_DEFAULT_GID = 2525

SYS_QUOTA_MULTIPLIER = 1048576

SYS_QUOTA_TYPE = courier

SYS_DEFAULT_MAXQUOTA = 500

SYS_DEFAULT_MAXALIAS = 100

SYS_DEFAULT_MAXUSERS = 100

SYS_DEFAULT_MAXNDQUOTA = 500

SYS_USER_DEFAULT_QUOTA = 5

SYS_USER_DEFAULT_NDQUOTA = 5

SYS_USER_DEFAULT_EXPIRE = 1y

SYS_BACKEND_TYPE = mysql

SYS_CRYPT_TYPE = md5crypt

SYS_MYSQL_USER = webman

SYS_MYSQL_PASS = webman

SYS_MYSQL_DB = extmail

SYS_MYSQL_HOST = localhost

SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock

SYS_MYSQL_TABLE = manager

SYS_MYSQL_ATTR_USERNAME = username

SYS_MYSQL_ATTR_PASSWD = password

SYS_LDAP_BASE = dc=extmail.org

SYS_LDAP_RDN = cn=Manager,dc=extmail.org

SYS_LDAP_PASS = secret

SYS_LDAP_HOST = localhost

SYS_LDAP_ATTR_USERNAME = mail

SYS_LDAP_ATTR_PASSWD = userPassword

SYS_RRD_DATADIR = /var/lib

SYS_RRD_TMPDIR = /tmp/viewlog

SYS_RRD_QUEUE_ON = yes

SYS_CMDSERVER_SOCK = /tmp/cmdserver.sock

SYS_CMDSERVER_MAXCONN = 5

SYS_CMDSERVER_PID = /var/run/cmdserver.pid

SYS_CMDSERVER_LOG = /var/log/cmdserver.log

SYS_CMDSERVER_AUTHCODE = your_auth_code_here

SYS_IGNORE_SERVER_LIST = web

[root@HOST_107_centos extman]#chown -R postfix.postfix /var/www/extsuite/extman/cgi/

[root@HOST_107_centos extman]#chown -R postfix.postfix /var/www/extsuite/extmail/cgi/

[root@localhost extman]# vim docs/extmail.sql

:% s/TYPE/ENGINE/g

[root@HOST_107_centos extman]# mysql -uroot -p < docs/extmail.sql

[root@HOST_107_centos extman]# mysql -uroot -p < docs/init.sql

这里导入之后,记得给extmail授权:grant all on *.* to extmail@localhost ;

root@HOST_107_centos extman]# cp docs/mysql_virtual_* /etc/postfix/

写个超级简单的脚本启动和关闭mail服务器:

[root@HOST_107_centos mailbox]# cat mail.sh

#!/bin/bash

case $1 in

stop)

postfix stop

service saslauthd stop

/etc/init.d/courier-authlib stop

service dovecot stop

#apachectl stop

/var/www/extsuite/extmail/dispatch-init stop

;;

start)

postfix start

service saslauthd start

/etc/init.d/courier-authlib start

service dovecot start

#apachectl start

/var/www/extsuite/extmail/dispatch-init start

;;

esac

/var/www/extsuite/extman/daemon/cmdserver –daemon

nginx配置:

[root@HOST_107_centos ~]# cat /data/local/nginx-1.8.0/conf/mail.conf

server {

listen       80;

server_name  mail.pxxxd.cn;

index index.html index.htm index.php index.cgi;

root  /var/www/extsuite/extmail/html/;

location /extmail/cgi/ {

fastcgi_pass          127.0.0.1:8888;

fastcgi_index         index.cgi;

fastcgi_param  SCRIPT_FILENAME   /var/www/extsuite/extmail/cgi/$fastcgi_script_name;

include               fastcgi.conf;

}

location  /extmail/  {

alias  /var/www/extsuite/extmail/html/;

}

location /extman/cgi/ {

fastcgi_pass          127.0.0.1:8888;

fastcgi_index         index.cgi;

fastcgi_param  SCRIPT_FILENAME   /var/www/extsuite/extman/cgi/$fastcgi_script_name;

include            fastcgi.conf;

}

location /extman/ {

alias  /var/www/extsuite/extman/html/;

}

access_log /data/local/nginx-1.8.0/logs/mail.log;

}

执行上面的脚本mail.sh,启动nginx就可以了

先到extman去添加用户,然后到Extmail登录收发邮件。

extman 后台登录,图形日志页面报错:

Can't locate RRDs.pm in @INC (@INC contains: /var/www/extsuite/extman/libs /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /var/www/extsuite/extman/libs/Ext/GraphLog.pm line 23. BEGIN failed--compilation aborted at /var/www/extsuite/extman/libs/Ext/GraphLog.pm line 23. Compilation failed in require at /var/www/extsuite/extman/libs/Ext/MgrApp/ViewLog.pm line 22. BEGIN failed--compilation aborted at /var/www/extsuite/extman/libs/Ext/MgrApp/ViewLog.pm line 22. Compilation failed in require at /var/www/extsuite/extman/cgi/viewlog.cgi line 18.

yum provides "*/RRDS.pam"

解决:

yum -y install perl-Time-HiRes perl-Time-HiRes-Value perl-File-Tail  rrdtool rrdtool-perl

还是不行,没了上面的错误提示,但是图形日志的图片不正常

yum -y install perl-CPAN

重启mail服务,不行

cp  /var/www/extsuite/extman/addon/mailgraph_ext/  /usr/local/mailgraph_ext

cd /usr/local/mailgraph_ext

./mailgraph-init start

Starting mail statistics grapher: mailgraph_ext

Can't locate File/Tail.pm in @INC (@INC contains: /root/perl5/lib/perl5/5.16.3/x86_64-linux-thread-multi /root/perl5/lib/perl5/5.16.3 /root/perl5/lib/perl5/x86_64-linux-thread-multi /root/perl5/lib/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/mailgraph_ext/mailgraph_ext.pl line 296.

BEGIN failed--compilation aborted at /usr/local/mailgraph_ext/mailgraph_ext.pl line 296.

Starting queue statistics grapher: qmonitor

报错,但是“邮件队列分析图”有出来了,不是之前那种裂开的无图片图标了。别的图好像还不行

下载File-Tail-1.3.tar.gz  , 安装

[root@bjdc-pytbackup mailgraph_ext]# ./mailgraph-init start

Starting mail statistics grapher: mailgraph_ext

Starting queue statistics grapher: qmonitor

再次登录,OK 了 !!!!所有图形正常

上面用到了ehlo等命令,这里给个说明:

smtp状态码:

1XX:

2XX:正确信息

3XX:当前信息没有结束

4XX:暂时性错误

5XX:永久性错误

smtp:协议命令

helo (smtp协议)

ehlo (esmtp协议)

mail from:    邮件发送人

rcpt to: 邮件接收人

date 邮件内容

Subject: 邮件标题

. 邮件结束符

alias:邮件别名

abc@abc.com:efg@efg.com   法网abc的其实会发到efg

使用newaliases来生成/etc/aliases.db

验证postfix是否安装OK

其他常见错误google有,不贴了,第一次自己搭建应该会有不少问题的,重要的是慢慢尝试

不知道什么原因一定要打印日志,查看日志,拿错误日志搜索,是解决问题的最佳方法

centos7.2下搭建postfix++dovecot+courier-authlib+extmail邮件收发系统相关推荐

  1. linux7 postfix,CentOS7下搭建postfix邮箱服务器并实现extmail的web访问

    笔记内容:CentOS7下搭建postfix邮箱服务器并实现extmail的web访问 笔记日期:2017-11-20 闲来无事想着尝试使用postfix搭建一个邮箱服务器,我是边搭建边写这个笔记,搭 ...

  2. linux 下邮件服务器,Linux 下搭建Postfix邮件服务器

    Linux 下搭建Postfix邮件服务器详解: 1.首先关闭sendmail服务 service sendmail stop 2.chkconfig sendmail off(关闭开机自启动) 3. ...

  3. 实现在CentOS7环境下搭建个人github博客

    实现在CentOS7环境下搭建个人github博客 主机要求:必须是centos环境版本可以不一样,假如你用的是其他版本的linux系统,只不过是命令不太一样. Tips:这里提前说下,对于Ubunt ...

  4. CentOS7环境下搭建Kibana

    本次安装的Kibana主要用于展示<CentOS7环境下搭建ElasticSearch>中搭建的ES,其详细安装部署过程如下所示: 1.解压Kibana压缩包kafka_2.11-0.8. ...

  5. 在CentOS7.6下搭建Oracle19c RAC集群

    在CentOS7.6下搭建Oracle19c RAC集群 1.准备阶段 1.1 虚拟环境准备 1.2 Oracle版本包准备 2.服务器配置阶段 2.1.配置IP 2.2.停止不相关服务 2.3.配置 ...

  6. CentOS7下搭建postfix邮箱服务器并实现extmail的web访问

    转载http://blog.51cto.com/zero01/2064693 闲来无事想着尝试使用postfix搭建一个邮箱服务器,我是边搭建边写这个笔记,搭建过程中遇到坑也会一并记录,使用的系统版本 ...

  7. linux用户无法接收邮件,linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(一)-系统账户登陆收发邮件...

    linux 下 搭建邮件邮件服务器(一)-系统账户登陆收发邮件 一.安装环境# lsb_release -d Description:    CentOS release 6.5 (Final) #  ...

  8. CentOS 搭建Postfix+Dovecot简单邮件系统

    2019独角兽企业重金招聘Python工程师标准>>> 服务器信息 系统:CentOS 6.5 minimal版本 主机:虚拟机 虚拟机IP:192.168.128.128/24 宿 ...

  9. centos6.8 搭建postfix/dovecot邮件服务器

    postfix/dovecot邮件服务器 安装配置参考链接  http://www.cnblogs.com/jkklearn/p/7280045.html (domain 为自己域名 xxx.com) ...

  10. linux postfix 搭建,linux 下搭建postfix服务器

    linux 下postfix邮箱的安装linux 一.首先关闭sendmail服务 service sendmail stop 二.chkconfig sendmail off(关闭开机自启动) 三. ...

最新文章

  1. 启动 ServiceFabric Windows服务报1053
  2. python之文件目录和路径
  3. leetcode 235. 二叉搜索树的最近公共祖先 思考分析
  4. 树莓派使用STEP1:装系统
  5. BigDecimal与Long、int之间的互换
  6. 一起谈.NET技术,WPF Ribbon 开发资料分享
  7. Vim - 奇技淫巧
  8. 够酷!小米全新折叠屏方案曝光:这次轮到小米引领潮流了?
  9. 软件项目成员的业绩考核
  10. win7+opencv3.0.0+vs2010 安装及配置
  11. 傲腾服务器系统,服务器装傲腾内存
  12. linux 断开远程vnc,Linux停VNC远程控制的使用方法
  13. 江西交通职业技术学院计算机网课,第16章-桥墩计算_江西交通职业技术学院:桥涵工程(高职、精品课程)_ppt_大学课件预览_高等教育资讯网...
  14. 树莓派控制3631AS数码管 驱动 python程序 共阴数码管|徐奥雯编写|XUAOWEN
  15. 资产证券化(ABS)+ 特殊目的信托(SPV)
  16. 关于修复mp4文件损坏的过程小记
  17. 钉钉撤回的信息服务器内能否看到,在钉钉群中撤回消息别人能看到“你撒回了一条消息”的文字吗?...
  18. SciTe 中文设置(解决乱码,中文界面)
  19. python江红书后第六章实验答案_C#NET程序设计教程实验指导(清华大学江红,余青松)实验源码第六章...
  20. skype 无法更新安装

热门文章

  1. EXcel 数学函数
  2. 110kv/35kv变电所无功补偿技术的研究+matlab仿真模型
  3. 基于组态软件的35kv变电站监控系统设计
  4. 原来找展会会刊(参展商名录)这么简单
  5. 教你以一秒钟10万+个密码的速度破解WiFi
  6. ASP字符查找替换器
  7. 刷机必备:BlackBerry ROM,桌面管理器下载
  8. 职称计算机 河南,2017年河南职称计算机报名入口
  9. [管理]鼎捷软件售后服务体验
  10. mtk手机的联机方法