免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4054 | 回复: 4
打印 上一主题 下一主题

[Mail] postfix+mysql+postfixadmin+dovecot 搭建文档 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-04 17:38 |只看该作者 |倒序浏览
本帖最后由 who8383 于 2014-12-04 17:45 编辑

安装前的准备工作
关闭防火墙与SELinux

  1. [root@mail ~]# service iptables stop
  2. iptables:清除防火墙规则:                                 [确定]
  3. iptables:将链设置为政策 ACCEPT:filter                    [确定]
  4. iptables:正在卸载模块:                                   [确定]
  5. [root@mail ~]# service ip6tables stop
  6. ip6tables:清除防火墙规则:                                [确定]
  7. ip6tables:将 chains 设置为 ACCEPT 策略:filter            [确定]
  8. :正在卸载模块:                                           [确定]
  9. [root@mail ~]# chkconfig iptables off
  10. [root@mail ~]# chkconfig ip6tables off
  11. [root@mail ~]# vim /etc/selinux/config
  12. # This file controls the state of SELinux on the system.
  13. # SELINUX= can take one of these three values:
  14. #     enforcing - SELinux security policy is enforced.
  15. #     permissive - SELinux prints warnings instead of enforcing.
  16. #     disabled - No SELinux policy is loaded.
  17. SELINUX=disabled
  18. # SELINUXTYPE= can take one of these two values:
  19. #     targeted - Targeted processes are protected,
  20. #     mls - Multi Level Security protection.
  21. SELINUXTYPE=targeted
复制代码

[root@mail ~]# reboot  (要重启生效)
修改主机名
  1. [root@mail ~]# vim /etc/sysconfig/network
  2. NETWORKING=yes
  3. HOSTNAME=mail.brahmaol.com
  4. [root@mail ~]# reboot
  5. [root@mail mail]# cat /etc/hosts
  6. 10.0.0.253  mail.brahmaol.com
  7. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  8. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  9. [root@mail mail]#
复制代码


创建一个vmail用户,用作管理虚拟邮箱的文件夹
  1. [root@mail mail]#useradd -u 2000 -d /var/vmail -m -s /sbin/nologin vmail
复制代码


安装mysql/dovecot/httpd/php,由于RPM存在依赖关系采用YUM安装(这个安装非常的方便 ),

  1. [root@mail mail]# yum install mysql mysql-server msyql-devel dovecot dovecot-mysql php php-imap php-mbstring httpd
复制代码


安装完之后把mysqld dovecot httpd 设置为开机自启动 命令为:chkconfig xxxx on   

启动数据库:
service mysqld start

  1. [root@mail mail]# /usr/bin/mysqladmin -u root password 'root'
复制代码

然后为postfixadmin建立相关数据


接下来配置postfixadmin ,这个到官网去下载,然后将其解压到‘html’目录下。 下载链接可以到网上找

  1. [root@mail ~]# tar zxvf postfixadmin-2.92.tar.gz
  2. [root@mail ~]# mv postfixadmin-2.92.tar.gz   adminmail  
  3. [root@mail ~]# cp -r adminmail /var/www/html/
复制代码

编辑postfixadmin配置文件
  1. [root@mail ~]# vim /var/www/html/adminmail/config.inc.php
  2. $CONF['configured'] = fslah;    #改为true  
  3. $CONF['default_language'] = 'en';   #改为cn
  4. $CONF['database_type'] = 'mysql';     #这里改为你的数据库类型,按版本区分
  5. $CONF['database_host'] = 'localhost';
  6. $CONF['database_user'] = 'postfix';     #这里改为数据库的用户名
  7. $CONF['database_password'] = 'postfix';  #这里改为数据库的密码
  8. $CONF['database_name'] = 'postfix';    #这里改为存放邮件数据库的名字
  9. $CONF['emailcheck_resolve_domain']='YES';   #如果你没做MX记录的话,将此项改为NO,
复制代码

修改文件权限
  1. [root@mail adminmail]# cd /var/www/html/adminmail/
  2. [root@mail adminmail]# chmod 777 templates_c
  3. [root@mail adminmail]# service httpd start
  4. [root@mail adminmail]# service dovecot start
复制代码


测试postfixadmin,进入:IP/adminmail/setup.php



创建postfixadmin后台管理密码并修改配置文件,我设置的密码是...秘密....


  1. [root@mail adminmail]# vim /var/www/html/adminmail/config.inc.php
  2. $CONF['setup_password'] = 'c6014f0e7adc2dc05bbfda1e3c83b1b9:506812960c3fe7cb8853e41923b11dc33b969983';
复制代码

输入你刚才设置的密码,在输入你新建的管理员的帐号密码
出现下图就是成功建立了帐号


在进入:ip/adminmail    登录postfixadmin,登录之后新建你的域名和邮件帐号


现在来配置postfix 了,它有俩个主要配置文件,在/etc/postfix目录下的main.cf master.cf  

  1. [root@mail postfix]# vim main.cf     先修改基本的配置
  2. mydomain = brahmaol.com    #改为你邮件的域名
  3. myhostname = mail.brahmaol.com  #改为你的主机名
  4. mynetworks-style = subnet
  5. mynetworks = 172.168.96.0/24   #改为你的网段
  6. home_mailbox = Maildir         
  7. inet_interfaces = all               
  8. inet_protocols = all
  9. #--------------------以下内容为新添加-------------------------
  10. virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
  11. virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
  12. virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
  13. # Additional for quota support
  14. virtual_create_maildirsize = yes
  15. virtual_mailbox_extended = yes
  16. virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf   
  17. virtual_mailbox_limit_override = yes
  18. virtual_maildir_limit_message = Sorry, this user has exceeded their disk space quota, please try again later.
  19. virtual_overquota_bounce = yes
  20. #Specify the user/group that owns the mail folders. I'm not sure if this is strictly necessary when using Dovecot's LDA.
  21. virtual_uid_maps = static:2000    #这是新建虚拟用户的ID
  22. virtual_gid_maps = static:2000    #这是新建虚拟组的ID
  23. virtual_mailbox_base = /var/vmail    #邮件存放位置
  24. #----------------------smtp----------------------------------
  25. smtpd_sasl_auth_enable = yes     #开启认证
  26. smtpd_sasl_type = dovecot          #认证类型
  27. dovecot_destination_recipient_limit = 1
  28. smtpd_sasl_path = /var/run/dovecot/auth-client
  29. smtpd_sasl_security_options = noanonymous
  30. broken_sasl_auth_clients = yes
  31. smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
复制代码

新建postfix连接数据库查询的文件。 链接数据库的帐号密码请按照实际情况修改

  1. [root@mail postfix]# vim /etc/postfix/mysql_virtual_domains_maps.cf
  2. user = postfix
  3. password = postfix
  4. hosts = localhost
  5. dbname = postfix
  6. query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
  7. [root@mail ~]# vim /etc/postfix/mysql_virtual_alias_maps.cf
  8. user = postfix
  9. password = postfix
  10. hosts = localhost
  11. dbname = postfix
  12. query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
  13. [root@mail postfix]# vim /etc/postfix/mysql_virtual_mailbox_maps.cf
  14. user = postfix
  15. password = postfix
  16. hosts = localhost
  17. dbname = postfix
  18. query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
  19. [root@mail postfix]# vim /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
  20. user = postfix
  21. password = postfix
  22. hosts = localhost
  23. dbname = postfix
  24. query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
复制代码


dovecot 配置文件 (由于修改的文件太多,我就不一一列出,直接改/etc/dovecot/dovecot.conf 文件就可以)

  1. [root@mail postfix]# doveconf -n
  2. # 2.0.9: /etc/dovecot/dovecot.conf
  3. # OS: Linux 2.6.32-71.el6.x86_64 x86_64 CentOS Linux release 6.0 (Final) ext4
  4. protocols = imap pop3
  5. listen = *
  6. auth_mechanisms = plain login cram-md5
  7. dict {
  8.   quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
  9. }
  10. disable_plaintext_auth = no
  11. listen = *
  12. mail_location = maildir:/var/vmail/%d/%d/%n    #命令指定客户端接收邮件到哪个目录请按照实际情况修改
  13. mbox_write_locks = fcntl
  14. passdb {
  15.   args = /etc/dovecot/dovecot-sql.conf.ext
  16.   driver = sql
  17. }
  18. protocols = imap pop3
  19. service auth {
  20.   unix_listener auth-client {
  21.     group = postfix
  22.     mode = 0600
  23.     user = postfix
  24.   }
  25.   unix_listener auth-userdb {
  26.     group = vmail
  27.     mode = 0600
  28.     user = vmail
  29.   }
  30. }
  31. service dict {
  32.   unix_listener dict {
  33.     group = vmail
  34.     mode = 0600
  35.     user = vmail
  36.   }
  37. }

  38. ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
  39. ssl_key = </etc/pki/dovecot/private/dovecot.pem
  40. userdb {
  41.   args = /etc/dovecot/dovecot-sql.conf.ext
  42.   driver = sql
  43. }
  44. [root@mail postfix]#
复制代码


新建dovecot-sql.conf.ext与dovecot-dict-sql.conf.ext 文件
  1. [root@mail postfix]# vim /etc/dovecot/dovecot-sql.conf.ext
  2. driver = mysql
  3. connect = host=localhost dbname=postfix user=postfix password=postfix
  4. default_pass_scheme = MD5
  5. 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'
  6. 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'
  7. [root@mail postfix]# vim /etc/dovecot/dovecot-dict-sql.conf.ext
  8. connect = host=localhost dbname=postfix user=postfix password=postfix
  9. map {
  10.   pattern = priv/quota/storage
  11.   table = quota2
  12.   username_field = username
  13.   value_field = bytes
  14. }
  15. map {
  16.   pattern = priv/quota/messages
  17.   table = quota2
  18.   username_field = username
  19.   value_field = messages
  20. }
复制代码


到此,配置结束。现在可以进行测试邮件服务器是否正常工作  由于该文档是在我搭建了服务器之后才写的,有些地方可能没写到位,如果有报错的地方多看日志,
下面说下我在测试时遇到的问题。可以pop3/IMAP登录,发信也没问题,可对方收不到邮件,对方发给我的邮件也收不到,查看日志没有报错,在/var/vmail/域名/域名/user/new   可以看到对方发过来的邮件。可是客户端获取不到邮件,这种情况的话就要修改配置文件
vim /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/vmail/%d/%d/%n  》根据邮件位置修改

然后在保存重启dovecot 服务后一切正常!!!   有问题欢迎联系我,大家一起讨论

论坛徽章:
0
2 [报告]
发表于 2014-12-04 17:44 |只看该作者
  为毛出现个不相关的图片

论坛徽章:
0
3 [报告]
发表于 2014-12-04 21:16 来自手机 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
2015元宵节徽章
日期:2015-03-06 15:50:39
4 [报告]
发表于 2015-02-28 18:31 |只看该作者
http:/IP/postfixadmin建立虚拟用户的时候,无法在磁盘上创建用户文件夹,mysql里倒是写入了。
virtual_mailbox_base = /var/mail/vmail/

postfixadmin的日志在哪里?不在log/message里?
改过主机名有影响么?

论坛徽章:
0
5 [报告]
发表于 2015-08-06 00:10 |只看该作者
我也正在安装postfixadmin可是建立的虚拟用户,却无法收取邮件,提示密码错误....vmail下也没有用户的邮件文件创建,能不能指点一二.谢谢~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP