Mail邮件服务的搭建方法

来源:互联网 发布:ubuntu启动snmp 编辑:程序博客网 时间:2024/05/14 09:05
LAMP+Postfix+Dovecot+Postfixadmin+Roundcube 
发邮箱   收邮箱    管理后台邮箱web页面


搭建Webmail邮件系统






LAMP    --是支持php的网站环境
Postfix      --是邮件发信通信程序
Dovecot      --是邮件收集通信程序
Postfixadmin --邮箱域以及邮箱用户管理后台
Roundcube    --是前台用户登陆邮箱收信发信web界面


一、 安装准备
1、 关闭SELinux
#暂时关闭selinux
setenforce 0


2、 配置iptables防火墙
#关闭iptables
/etc/init.d/iptables stop


3、 配置hostname
#暂时绑定hosts
hostname mail.ali.com


#修改network文件
vim /etc/sysconfig/network
HOSTNAME=mail.ali.com


#添加本地hosts
vim /etc/hosts
112.74.28.201 mail.ali.com


4、 配置软件源.
#添加第三方软件源,epel源
rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -q epel-release
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6


在[epel]最后添加priority=11,作用是设置yum查询源的优先级为先官方后epel
vi /etc/yum.repos.d/epel.repo   
priority=:q!11    
yum makecache   --重建缓存


二、 环境配置
1、 配置LAMP环境
#添加用户,并用yum安装LAMP相关软件
useradd -u 2000 -d /var/vmail -m -s /sbin/nologin vmail


yum -y install httpd mysql mysql-devel mysql-server php php-pecl-Fileinfo php-mcrypt php-devel php-mysql php-common php-mbstring php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc pcre pcre-devel


2、 整合Apache和PHP
#修改配置文件
#vim /etc/httpd/conf/httpd.conf
#修改以下参数
DirectoryIndex index.php index.html index.html.var
User vmail
Group vmail


3、 测试php解析
#新建测试PHP文件
#vim /var/www/html/index.php
<?php
        phpinfo();
?>


#重启Apache
/etc/init.d/httpd restart 
注:打开浏览器,输入你的IP,看到PHP详细信息,LAMP环境OK.


三、 配置postfixadmin ,邮箱域,邮箱用户管理后台
1、 下载 postfixadmin
#下载并改名并解压postfixadmin
cd /var/www/html 
wget http://nchc.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.92/postfixadmin-2.92.tar.gz && tar xvf postfixadmin-2.92.tar.gz  && mv postfixadmin-2.92 postfixadmin


#安装dovecot,配置postfixadmin需要用到
yum install -y  dovecot dovecot-devel dovecot-mysql


2、 修改配置文件
#备份配置文件
cd /var/www/html/postfixadmin &
cp config.inc.php config.inc.php.bak 
cp setup.php setup.php.bak 


#修改配置文件中以下参数
vim config.inc.php
$CONF['configured'] = true;
$CONF['database_type'] = 'mysql'; --对应数据库
$CONF['database_host'] = 'localhost'; --数据库主机
$CONF['database_user'] = 'postfix'; --数据库用户名
$CONF['database_password'] = 'postfix'; --数据库密码
$CONF['database_name'] = 'postfix'; --数据库名称
$CONF['admin_email'] = 'postmaster@qy.com';
$CONF['encrypt'] = 'dovecot:CRAM-MD5';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['aliases'] = '1000';
$CONF['mailboxes'] = '1000';
$CONF['maxquota'] = '1000';
$CONF['fetchmail'] = 'NO';
$CONF['quota'] = 'YES';
$CONF['used_quotas'] = 'YES';
$CONF['new_quota_table'] = 'YES';


#Mysql中建库并授权,后面配置都需要于现在授权信息一致
/etc/init.d/mysqld start 
mysql> create database postfix;
mysql> grant all on postfix.* to postfix@'localhost' identified by 'postfix';
mysql> flush privileges;


#测试能否登录
mysql -upostfix -ppostfix


#修改所有者和所有组
chown -R vmail.vmail /var/www/html/postfixadmin/
chown -R vmail.vmail /var/lib/php/session/ --这里必须改所属,不然会登录不成功


3、 配置Postfixadmin
打开http://邮件服务器IP/postfixadmin/setup.php
如有报错,请检查以下项目: 
配置文件是否修改正确
posfixadmin目录权限
PHP版本是否不支持
Mysql 是否正确启动
 
在网页的最下面设置初始密码,产生MD5校验码:
 


再将产生的MD5校验码复制到文件参数里
vim /var/www/html/postfixadmin/config.inc.php
$CONF['setup_password'] = 'fd16d423a537fa766a501d089823c8be:a23d10bad95c883c98c817ea37afaeae1d186624';
增加管理用户:
填写蓝色方框中初,始密码、管理用户、邮箱密码等添加管理用户.
如果不能添加管理用户,请检查以下项目: 
Dovecot 是否已经安装
Dovecot 是否已经启动
/var/www/html/postfixadmin/congfig.inc.php 是否配置正确


 
出现新增管理员成功这几个字才算成功
登录http://邮件服务器IP/postfixadmin/login.PHP
如出现登陆后自动跳转到postfixadmin登录界面问题
 #修改session文件权限
 chown -R vmail.vmail /var/lib/php/session/
 
登陆后界面
 




新建域
 
新建邮箱
 


到此后台配置完成。


接下来配置前面webmail界面,发信,收信界面




四、 配置Postfix,发信配置
1、 安装postfix
#yum安装postfix
yum remove -y sendmail && yum install postfix


2、 配置postfix
修改postfix配置文件
#vim /etc/postfix/main.cf
#修改以下参数
myhostname = mail.free.com --这里是域名解析的名称
mydomain = free.com --这里也是域名.com
myorigin = $mydomain
inet_interfaces = all --允许所有
mynetworks_style = host
mynetworks = 192.168.18/24, 127.0.0.0/8 --这里是允许扫描IP段链接,有多个网段用逗号隔开


#添加以下参数
#虚拟域名配置
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
# Additional for quota support
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, this user has exceeded their disk space quota, please try again later.
virtual_overquota_bounce = yes
#Specify the user/group that owns the mail folders. I'm not sure if this is strictly necessary when using Dovecot's LDA.
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
#Specifies which tables proxymap can read: http://www.postfix.org/postconf.5.html#proxy_read_maps
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
#SASL SUPPORT FOR CLIENTS
# Turns on sasl authorization
smtpd_sasl_auth_enable = yes
#Use dovecot for authentication
smtpd_sasl_type = dovecot
# Path to UNIX socket for SASL
smtpd_sasl_path = /var/run/dovecot/auth-client
#Disable anonymous login. We don't want to run an open relay for spammers.
smtpd_sasl_security_options = noanonymous
#Adds support for email software that doesn't follow RFC 4954.
#This includes most versions of Microsoft Outlook before 2007.
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =  permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
# TRANSPORT MAP
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1


#vim /etc/postfix/master.cf
#注意flags前面的空格
dovecot   unix  -       n       n       -       -       pipe--中间都有空格隔开
  flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}


创建MySQL脚本
请注意user password dbname 要和上面配置postfixadmin中授权的一致。
#vim /etc/postfix/mysql_virtual_domains_maps.cf --链接邮箱发信用的参数


user = postfix --这里对应的是上面设置的
password = postfix
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'--1为可用,0为不可用
#optional query to use when relaying for backup MX
#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'


# vim /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'


#vim /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'


#vim /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = postfix
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'




五、 配置Dovecot ,收集配置
1、 修改配置文件
以下配置都是在原文件基础上修改
#vim /etc/dovecot/dovecot.conf


protocols = imap pop3
listen = *
dict {
  quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
!include conf.d/*.conf


#vim /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login cram-md5
!include auth-sql.conf.ext


#vim /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:%hMaildir
mbox_write_locks = fcntl


#vim /etc/dovecot/conf.d/10-master.conf
service imap-login {
  inet_listener imap {
  }
  inet_listener imaps {
  }
}
service pop3-login {
  inet_listener pop3 {
  }
  inet_listener pop3s {
  }
}
service lmtp {
  unix_listener lmtp {
  }
}
service imap {
}
service pop3 {
}
service auth {
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }
#新加下面一段,为smtp做认证
  unix_listener auth-client { --客户端的参数
    mode = 0600 --用户的权限,只能读权限
    user = postfix --这里必须指定postfix 
    group = postfix
  }
}
service auth-worker {
}
service dict {
  unix_listener dict {
    mode = 0600
    user = vmail
    group = vmail
  }
}


#vim /etc/dovecot/conf.d/15-lda.conf


protocol lda {
  mail_plugins = quota
  postmaster_address = postmaster@qy.com #管理员邮箱
}


#vim /etc/dovecot/conf.d/20-imap.conf


protocol imap {
        mail_plugins = quota imap_quota
}


#vim /etc/dovecot/conf.d/20-pop3.conf


protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
  mail_plugins = quota
}


#vim /etc/dovecot/conf.d/90-quota.conf


plugin {
  quota_rule = *:storage=1G --允许容量1个G
}
plugin {
}
plugin {
  quota = dict:User quota::proxy::quota
}
plugin {
}


2、 添加配置文件
以下配置文件为新添加文件
#vim /etc/dovecot/dovecot-sql.conf.ext


driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix
default_pass_scheme = CRAM-MD5
user_query = SELECT CONCAT('/var/vmail/', maildir) AS home, 2000 AS uid, 2000 AS gid, CONCAT('*:bytes=', quota) as quota_rule FROM mailbox WHERE username = '%u' AND active='1'
password_query = SELECT username AS user, password, CONCAT('/var/vmail/', maildir) AS userdb_home, 2000 AS userdb_uid, 2000 AS userdb_gid, CONCAT('*:bytes=', quota) as userdb_quota_rule FROM mailbox WHERE username = '%u' AND active='1'




#vim /etc/dovecot/dovecot-dict-sql.conf.ext


connect = host=localhost dbname=postfix user=postfix password=postfix
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}






六、 测试SMTP和POP3服务(通信协义)
1、 新建域及用户
新建邮箱域名
新建邮箱用户




2、 测试SMTP协议
#service dovecot  restart    --重启服务
#service postfix  restart
#telnet localhost smtp --先用telnet 测试本地 smtp通信协议是否成功
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.ali.com ESMTP Postfix
ehlo qy.com
250-mail.ali.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN CRAM-MD5
250-AUTH=PLAIN LOGIN CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.


3、 测试POP3协议
#telnet localhost pop3 --测试pop3是否成功
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user test@qy.com
+OK
pass test123456
+OK Logged in.
quit
+OK Logging out.
Connection closed by foreign host.


出错退出方法 Ctrl+】  quit








七、 配置Roundcubemail,邮箱登陆操作的界面
1、 下载roundcubemail
# 下载解压并改名
cd /var/www/html 
wget https://downloads.sourceforge.net/project/roundcubemail/roundcubemail/1.0.6/roundcubemail-1.0.6.tar.gz 
tar xvf roundcubemail-1.0.6.tar.gz && mv roundcubemail-1.0.6/ webmail


--这里会报错,把那个参数加上
2、 配置roundcubemail
#更改时区
#vim /etc/php.ini
date.timezone = Asia/Shanghai --必须使用这个参数,不然识别不了
  如果是别的时区,也必须更改同一个时区,不然会有时间差


#更改所有者所有组
chown vmail.vmail -R /var/www/html/webmail/


#重启Apache
/etc/init.d/httpd restart


# Mysql授权,稍后配置需要用到
# mysql
mysql> CREATE DATABASE roundcubemail;
mysql> GRANT ALL  ON roundcubemail.* TO roundcube @localhost IDENTIFIED BY 'roundcubemail';
mysql> FLUSH PRIVILEGES;


http://邮件服务器IP/webmail/installer.php 进行配置 图文配置详情
登陆 http://服务器IP/webmail 使用邮件系统


安装环境检测
打开http://邮件服务器IP/webmail/installer/index.php
 
 
- Checking PHP.in 必须OK 
- Checking databases MySQL 必须OK 
- 其它项目可选


页标及数据库
--这下面统一的也是域 的name  
 


前几步中Mysql授权的roundcubemail相关信息
 


IMAP配置 –邮箱通信地址 (收信)
default_host —— 你的邮件服务器    写localhost
default_port —— IMAP端口143
user_domain —— domain 邮件域
 


POP3配置—邮件发信地址   (发信)
smtp_server —— 127.0.0.1   localhost
smtp_port —— smtp端口25
其他默认
 


用户相关配置
language —– 语言 zh_CN
pagesize —– 邮件列表每页显示多少封邮件
preview_pane —- 点击邮件标题时是否显示内容预览
htmleditor —- 写邮件时是否使用HTML编辑器还是纯文本方式,根据你的需要设置,其他默认。


点击CREATE CONFIG 会产生config.inc.php文件并保存在/var/www/html/webmail/config/目录下
 




设置完以后,在网页最上面会出现这么个参数,点击它
 
初始化数据库
 


验证登录
 
                            --上面的框是添邮箱,用于测试
登陆使用Webmail
http://192.168.1.202/webmail/
 






八、后续工作
1、 安全配置项目
#删除安装记录信息文件
rm  -rf /var/www/html/webmail/installer/


# config 目录涉及账号信息
# 修改配置 使用目录容器 禁止访问
# vim /etc/httpd/conf/httpd.conf
<Location /webmail/config/>
Order allow,deny
Deny from all
</Location>


2、 开启相关服务
#开机启动
chkconfig httpd on 
chkconfig mysqld on
chkconfig dovecot on
chkconfig postfix on




九、 常见错误指引
收信正常,发信异常。
error,send mail falt 
请仔细检查 postfix 配置


连接IMAP失败。
发信正常,收信异常。 
ERR Authentication failed. 认证失败 
请仔细检查 dovecot 配置


webmail登录页面输入账号密码后会重新返回登录页面
#修改session所有者和所有组
chown -R vmail.vmail /var/lib/php/session/
#重启Apache
/etc/init.d/httpd restart




fatal: no SASL authentication mechanisms
#安装SASL组件
 yum install  cyrus-sasl* -y




can’t proc_open /usr/bin/doveadmpw
can’t encrypt password with dovecotpw
 #查看postfixadmin配置文件,doveadm pw 之间有空格
 vim /var/www/html/postfixadmin/config.inc.php
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";



原创粉丝点击