linux/centos环境下搭建企业邮箱服务器

2025-11-19 12:42:11

1、首先申请一个服务器和邮箱域名,并设置好域名解析,这里我以192.168.1.12 test.com为例:

登录域名服务提供商后台,设置域名解析:

记录类型      主机记录    记录值                     MX优先级

A                 @             192.168.1.12            --

A                 www         192.168.1.12            --

A                 mail          192.168.1.12             --

MX              @             mail.test.com           5

配置完毕后验证配置是否生效:

$ ping mail.test.com

如果能提示出你的服务器的IP地址, 证明 mail和www的配置已经生效。

$ nslookup -qt=mx  mail.test.com

能显示你的域名mail.test.com ,就代表你的 MX记录配置正确。

2、第二,服务器准备工作,关闭Selinux和防火墙,删除默认的sendmail服务

$ setenforce 0

$ service firewalld stop

$ yum remove sendmail

3、第三,安装mysql

$ yum install mysql

$ service mysqld restart

4、第四,安装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

$ chown -R postfix:postdrop /var/spool/postfix$ chown -R postfix:postdrop /var/lib/postfix/$ chown root /var/spool/postfix$ chown -R root /var/spool/postfix/pid

$ yum install postfix

安装完毕后修改配置文件:

第一个是 :postfix 的配置文件    /etc/postifx/main.cf ,  需要修改的内容如下所示,其他的用默认即可。

command_directory = /usr/sbin

config_directory = /etc/postfix

daemon_directory = /usr/libexec/postfix

data_directory = /var/lib/postfix

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

html_directory = no

inet_protocols = ipv4

mail_owner = postfix

mailq_path = /usr/bin/mailq

manpage_directory = /usr/local/man

newaliases_path = /usr/bin/newaliases

queue_directory = /var/spool/postfix

readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES

sample_directory = /etc/postfix

sendmail_path = /usr/sbin/sendmail

setgid_group = postdrop

unknown_local_recipient_reject_code = 550

#Base adding

inet_interfaces=all

myhostname=mail.test.com

mydomain=test.com

myorigin=$mydomain

#配置虚拟用户时需要将此项注释

#mydestination=$mydomain,$myhostname   

home_mailbox=/var/mailbox

alias_maps = hash:/etc/aliases

################################基于smtp auth的配置选项##############

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

myNetworks = 0.0.0.0/0

smtpd_sasl_local_domain=$mydomain

smtpd_recipient_restrictions =permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

#############################adding virtual基于虚拟用户的配置选项##########

virtual_mailbox_base=/var/mailbox

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

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

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

virtual_uid_maps=static:2525

virtual_gid_maps=static:2525

virtual_transport = virtual

5、第五,安装dovecot,修改配置文件

$ yum install -y  dovecot dovecot-mysql

dovecot的配置文件  /etc/dovecot/dovecot.conf,需要修改的内容如下所示,其他的默认即可。

[root@mail ~]# cd /etc/dovecot/[root@mail dovecot]# vim dovecot.conf  

protocols = imap pop3 lmtp

listen = *, ::

base_dir = /var/run/dovecot/

!include conf.d/*.conf

[root@mail dovecot]# cd conf.d/[root@mail conf.d]# vim 10-auth.confdisable_plaintext_auth = no

[root@mail conf.d]# vim 10-mail.confmail_location = maildir:~/Maildirmail_location = maildir:/var/mailbox/%d/%n/Maildirmail_privileged_group = mail

[root@mail conf.d]# vim 10-ssl.confssl = no

[root@mail conf.d]# vim 10-logging.conf info_log_path = /var/log/dovecot.infolog_timestamp = "%Y-%m-%d %H:%M:%S "

[root@mail conf.d]# cp auth-sql.conf.ext auth-sql.conf[root@mail conf.d]# vim auth-sql.confpassdb {  driver = sql  # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext  args = /etc/dovecot/dovecot-sql.conf.ext}userdb {  driver = sql  args = /etc/dovecot/dovecot-sql.conf.ext}

编辑dovecot通过mysql认证的配置文件:

[root@mail conf.d]# vim /etc/dovecot/dovecot-sql.conf.ext

driver = mysql

connect = host=localhost dbname=extmail user=extmail password=extmail

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'

6、第六、安装courier-authlib

下载解压并并编译

[root@mail ~]# wget https://sourceforge.net/projects ... hlib-0.66.2.tar.bz2[root@mail ~]# tar xf courier-authlib-0.66.2.tar.bz2[root@mail ~]# cd courier-authlib-0.66.2[root@mail ~]# ./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

这里会报错,configure: error: The Courier Unicode Library 1.2 appears not to be installed.提示Courier Unicode Library没有安装,我们下载courier-unicode-1.2并编译安装。

[root@mail ~]# wget https://sourceforge.net/projects/courier/files/courier-unicode/1.2/courier-unicode-1.2.tar.bz2

[root@mail ~]# tar xf courier-unicode-1.2.tar.bz2 

[root@mail ~]# cd courier-unicode-1.2[root@mail courier-unicode-1.2]# ./configure[root@mail courier-unicode-1.2]# make && make install

再次编译courier-authlib就没问题了,别忘了make && makeinstall2、配置courier-authlib

[root@mail  courier-authlib-0.66.2]# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon[root@mail  courier-authlib-0.66.2]# cp /etc/authdaemonrc.dist  /etc/authdaemonrc[root@mail  courier-authlib-0.66.2]# cp /etc/authmysqlrc.dist  /etc/authmysqlrc

[root@mail  courier-authlib-0.66.2]# vim /etc/authdaemonrc authmodulelist="authmysql"authmodulelistorig="authmysql"

[iyunv@localhost  courier-authlib-0.66.2]# vim /etc/authmysqlrc MYSQL_SERVER            localhostMYSQL_USERNAME          extmailMYSQL_PASSWORD          extmailMYSQL_SOCKET            /var/lib/mysql/mysql.sockMYSQL_PORT               3306MYSQL_DATABASE          extmailMYSQL_USER_TABLE        mailboxMYSQL_CRYPT_PWFIELD     passwordDEFAULT_DOMAIN          test.comMYSQL_UID_FIELD         '2525'MYSQL_GID_FIELD         '2525'MYSQL_LOGIN_FIELD       usernameMYSQL_HOME_FIELD        concat('/var/mailbox/',homedir)MYSQL_NAME_FIELD        nameMYSQL_MAILDIR_FIELD     concat('/var/mailbox/',maildir

3、courier-authlib添加服务启动脚本及其他

[root@mail  courier-authlib-0.66.2]# cp courier-authlib.sysvinit /etc/init.d/courier-authlib[root@mail  courier-authlib-0.66.2]# chmod +x /etc/init.d/courier-authlib[root@mail  courier-authlib-0.66.2]# chkconfig --add courier-authlib[root@mail  courier-authlib-0.66.2]# chkconfig courier-authlib on[root@mail  courier-authlib-0.66.2]# echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf[root@mail  courier-authlib-0.66.1]# ldconfig[root@mail  courier-authlib-0.66.1]# service courier-authlib startStarting Courier authentication services: authdaemond

4、smtp以及虚拟用户相关的设置

[root@mail ~]# vim /usr/lib64/sasl2/smtpd.conf //文件不存在,要自己创建pwcheck_method: authdaemondlog_level: 3mech_list: PLAIN LOGINauthdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

7、第七、安装extmail

extmail和extman可通过这两个链接下载http://7xivyw.com1.z0.glb.clouddn.com/extmail-1.2.tar.gzhttp://7xivyw.com1.z0.glb.clouddn.com/extman-1.1.tar.gz1、创建目录并解压

[root@mail ~]# mkdir -p /var/www/extsuite[root@mail ~]# tar xf extmail-1.2.tar.gz -C /var/www/extsuite/[root@mail ~]# mv /var/www/extsuite/extmail-1.2/ /var/www/extsuite/extmai

2、更改extmail的配置文件

[root@mail ~]# cd /var/www/extsuite/extmail[root@mail extmail]# cp webmail.cf.default webmail.cf[root@mail extmail]# vim webmail.cfSYS_SESS_DIR = /tmp/extmailSYS_UPLOAD_TMPDIR = /tmp/extmail/uploadSYS_USER_LANG = zh_CNSYS_MIN_PASS_LEN = 8SYS_MAILDIR_BASE = /var/mailboxSYS_MYSQL_USER = extmailSYS_MYSQL_PASS = extmailSYS_MYSQL_DB = extmailSYS_MYSQL_HOST = localhostSYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sockSYS_MYSQL_TABLE = mailboxSYS_MYSQL_ATTR_USERNAME = usernameSYS_MYSQL_ATTR_DOMAIN = domainSYS_MYSQL_ATTR_PASSWD = passwordSYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socke

3、建立临时文件目录与session目

[root@mail extmail]# mkdir -p /tmp/extmail/upload[root@mail extmail]# chown -R postfix.postfix /tmp/extmail/

8、第八、安装extman1、解压extman

[root@mail ~]# tar xf extman-1.1.tar.gz -C /var/www/extsuite/[root@mail ~]# cd /var/www/extsuite/[root@mail extsuite]# mv extman-1.1/ extman

2、更改extman配置文

[root@mail extsuite]# cd extman/[root@mail extman]# cp webman.cf.default webman.cf

3、更改cgi目录属主属组

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

4、导入数据库由于数据库不能识别TYPE=MyISAM,所以这里直接导入会出错,先编辑extmail.sql数据库文件,将TYPE=MyISAM更改为ENGINE=MyISAM

[root@mail extman]# vim docs/extmail.sql :% s/TYPE/ENGINE/g

共有五处修改导入还是会报错

[root@mail extman]# mysql -uroot < docs/extmail.sql ERROR 1364 (HY000) at line 31: Field 'ssl_cipher' doesn't have a default value

此处需要修改my.cnf配置文件

[root@mail extman]# vim /etc/my.cnf# Recommended in standard MySQL setup#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES   //将这行注视掉,重启mysql,这里需要注意的是,等数据库导入成功后,这项是不可以去掉注释的,不然mysql就启动不起来了。再次导入数据库[root@mail extman]# mysql -uroot < docs/extmail.sql [iyunv@localhost extman]# mysql -uroot < docs/init.sql

5、创建数据库用户extmail并授予权限

mysql> GRANT ALL ON extmail.* to extmail@'%' identified by 'extmail';  Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)

6、复制四-4提到的配置文件

[root@mail ~]# cd /var/www/extsuite/extman/docs/[root@mail docs]# cp mysql_virtual_* /etc/postfix/

6、为extman创建临时目录

[root@mail extman]# mkdir /tmp/extman[root@mail extman]# chown -R postfix.postfix /tmp/extman/

9、第九、启动postfix、dovecot、saslauthd

$ service   postfix   restart

$ service   dovecot   restart

$ service   saslauthd   restart

[root@mail extman]# ss -tnluo | grep :25tcp    LISTEN     0      100                    *:25                    *:*    [root@mail extman]# ps aux | grep dovecotroot      2220  0.1  0.3  15616  1508 ?        Ss   03:02   0:00 /usr/sbin/dovecot -Fdovecot   2223  0.0  0.1   9312  1004 ?        S    03:02   0:00 dovecot/anvilroot      2224  0.0  0.2   9440  1172 ?        S    03:02   0:00 dovecot/logroot      2226  0.0  0.4  12428  2184 ?        S    03:02   0:00 dovecot/configroot      2240  0.0  0.1 112640   972 pts/0    R+   03:02   0:00 grep --color=auto dovecot[root@mail extman]# ps aux | grep saslauthdroot      2230  0.0  0.1  71944   916 ?        Ss   03:02   0:00 /usr/sbin/saslauthd -m /run/saslauthd -a pamroot      2231  0.0  0.1  71944   676 ?        S    03:02   0:00 /usr/sbin/saslauthd -m /run/saslauthd -a pamroot      2232  0.0  0.1  71944   676 ?        S    03:02   0:00 /usr/sbin/saslauthd -m /run/saslauthd -a pamroot      2233  0.0  0.1  71944   676 ?        S    03:02   0:00 /usr/sbin/saslauthd -m /run/saslauthd -a pamroot      2234  0.0  0.1  71944   676 ?        S    03:02   0:00 /usr/sbin/saslauthd -m /run/saslauthd -a pamroot      2242  0.0  0.1 112640   668 pts/0    R+   03:03   0:00 grep --color=auto saslauthd

10、第十、测试虚拟用户

[root@mail courier-authlib-0.66.2]# /usr/local/courier-authlib/sbin/authtest -s login postmaster@extmail.org extmailAuthentication succeeded.                //显示这个表示成功,测试时使用的是postmaster@extmail.org,因为我们导入的数据库init.sql里面自带了这个。Authenticated: postmaster@extmail.org  (uid 2525, gid 2525)Home Directory: /var/mailbox/extmail.org/postmaster  //这里需要注意/var/mailbox这个目录现在我们还没有创建,后面web访问的时候如果没有会报错,所以提前创建。                    Maildir: /var/mailbox/extmail.org/postmaster/Maildir/                    Quota: (none)            Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0                Cleartext Password: extmail                    Options: (none)[root@mail courier-authlib-0.66.2]# mkdir /var/mailbox[root@mail courier-authlib-0.66.2]# chown -R postfix.postfix /var/mailbox/

11、第十一、配置nginx访问

1、nginx本身并不能解析cgi,extmail自带了解析cgi的程序,但是有些地方需要修改下

[root@mail ~]# vim /var/www/extsuite/extmail/dispatch-initSU_UID=postfixSU_GID=postfix

启动dispatch-init

[root@mail ~]# /var/www/extsuite/extmail/dispatch-init startStarting extmail FCGI server...

启动cmdserver,不启动会出现Connection refused

[root@mail ~]# /var/www/extsuite/extman/daemon/cmdserver -v -d loaded ok

2、添加nginx虚拟主机

[root@mail ~]# vim /etc/nginx/conf.d/extmail.conf

server {   listen       8080;   server_name  mail.everyoo.com;   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               fcgi.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            fcgi.conf;        }        location /extman/ {             alias  /var/www/extsuite/extman/html/;        }      access_log  /var/log/extmail_access.log;}

生成fcgi.conf

[root@mail ~]# vim /etc/nginx/fcgi.conffastcgi_param  GATEWAY_INTERFACE  CGI/1.1;fastcgi_param  SERVER_SOFTWARE    nginx;fastcgi_param  QUERY_STRING       $query_string;fastcgi_param  REQUEST_METHOD     $request_method;fastcgi_param  CONTENT_TYPE       $content_type;fastcgi_param  CONTENT_LENGTH     $content_length;fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;fastcgi_param  REQUEST_URI        $request_uri;fastcgi_param  DOCUMENT_ROOT      $document_root;fastcgi_param  SERVER_PROTOCOL    $server_protocol;fastcgi_param  REMOTE_ADDR        $remote_addr;fastcgi_param  REMOTE_PORT        $remote_port;fastcgi_param  SERVER_ADDR        $server_addr;fastcgi_param  SERVER_PORT        $server_port;fastcgi_param  SERVER_NAME        $server_name;

重启nginx,访问192.168.1.12:8080,出错,需要安装Unix::Syslog

安装Unix::Syslog

[root@mail ~]# wget http://www.cpan.org/authors/id/M/MH/MHARNISCH/Unix-Syslog-1.1.tar.gz

[root@mail ~]# tar xf Unix-Syslog-1.1.tar.gz [root@mail ~]# cd Unix-Syslog-1.1[iyunv@localhost Unix-Syslog-1.1]# perl Makefile.PL[root@mail Unix-Syslog-1.1]# make && make install

添加域名,出错

编辑/var/www/extsuite/extman/libs/Ext/MgrApp/Domain.pm,把198行的can_sign改为can_signup。

can_signup => $q->cgi('cansignup') ? 1 : 0,

extmail正确使用

extman 默认管理帐号为:root@extmail.org  密码为:extmail*123*

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢