• ubuntu下架构extmail邮件服务器

    参考
    文库关键词:构建Postfix邮件服务器
    http://blog.thematice.com/html/y2010/03/17/1060/%E6%9E%84%E5%BB%BApostfix%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%80lamp%E5%B9%B3%E5%8F%B0%E7%9A%84%E5%AE%89%E8%A3%85.html
    http://man.chinaunix.net/tech/Postfix_I.html
    1.首先,消灭一些专业词汇
    SMTP  (Simple Mail Transfer Protocol)   简单邮件传输协议
    IMAP  (Internet Mail Access Protocol)   交互式邮件存取协议
    POP3  (Post Office Protocol 3)          邮局协议的第3个版本
    MTA(Mail Transfer Agent)邮件传送代理 将来自MUA的信件转发给指定的用户的程序 从客户端软件收信,发信给目的地的其他的MTA
    //邮件服务器软件:eg:Postfix
    MUA(Mail User Agent) 邮件用户代理 用于收发Mail的程序
    //客户端软件:eg:OutLook Express
    MDA(MAIL DELIVERY AGENT)邮件投递代理 从MTA取得邮件并传送至邮件接受者的邮箱 它还可以具有邮件过滤(filtering)与其他相关功能
    //服务器软件:eg:maildrop(支持过滤,自动回复等强大功能)
    2.模拟一下工作流程
    简单图示:邮件服务器-MTA-MDA-MUA
    简单说明:服务器-邮件传输代理-邮件投递代理-客户端接收发送邮件
    简单理解:仓库-DHL快递公司-快递员-客户
    3.下面进行实操
    软件环境:
    操作系统(OS) ubuntu/debian 开源系统
    邮件传输代理(MTA) Postfix 使用最新版本2.5.1
    邮件投递代理(MDA) maildrop 支持过滤和强大功能
    数据库/目录服务 MySQL (可选openLDAP或NetScape LDAP)本文以MySQL为蓝本
    POP3 服务器 Courier-IMAP 只使用pop3部分,对于大部分企业而言完全足够 ( 也可用Cyrus-IMAP做 POP3/IMAP4服务器)
    SMTP认证库 Cyrus SASL 标准的SASL实现库,可以支持Courier authlib(通过Cyrus-SASL对存储在MySQL数据库中的用户进行验证和授权)
    其他数据认证库 Courier Authlib authlib是maildrop, courier-imap等服务的关键部件
    WebMail 系统 ExtMail 支持多语言、全部模板化,功能基本齐全
    ExtMan 帐户管理后台 ExtMan 支持无限域名、无限用户
    防病毒软件 Anti-Virus ClamAV 最热门的开源杀毒软件
    SMTP阶段反垃圾邮件工具 Spam Locker 基于SMTP行为识别的Antispam软件,大量可选插件
    内容过滤器 Amavisd-new Content-Filter软件,支持与clamav/sa的挂接
    内容级别的反垃圾邮件工具 SpamAssassin 著名的SA,可以支持大量规则,但速度慢
    日志分析及显示 mailgraph_ext 在ExtMan中已经包含了
    安装Courier-Authlib
    ape-get install courier-authdaemon courier-authlib-mysql
    配置文件在 /etc/courier/
    启动文件在 /etc/init.d/
    安装Maildrop
    apt-get install maildrop
    gedit /etc/maildropmysql.config //创建一个文件
    问题 Extmail1.1.0 显示:Unix::Syslog not found,
    apt-get install libunix-syslog-perl
    问题 系统信息 显示No such file or directory
    就是没有启动cmdserver造成的, 方法就启动 /var/www/extsuite/extman/daemon/cmdserver -d
    apt-get install
    postfix
    postfix-mysql  //mysql 存储数据
    postfix-doc
    mysql-client
    mysql-server
    courier-authdaemon
    courier-authlib-mysql  SASL2的认证方式就主要是靠courier-authlib来完成
    courier-pop
    courier-pop-ssl
    courier-imap
    courier-imap-ssl
    libsasl2-modules
    libsasl2-modules-sql
    sasl2-bin
    libpam-mysql
    openssl
    phpmyadmin
    apache2
    libapache2-mod-fastcgi
    libfcgi-perl
    libapache2-mod-php5
    php5
    php5-mysql
    build-essential
    libtool
    libnet-server-perl
    libnet-cidr-perl
    libberkeleydb-perl
    arc
    zoo
    lzop
    liblzo1
    libstdc++5
    libgd-gd2-perl
    libfile-tail-perl
    libdigest-sha1-perl
    libdigest-HMAC-perl
    libnet-ip-perl
    libnet-dns-perl
    libhtml-tagset-perl
    libhtml-parser-perl
    libio-stringy-perl
    libio-multiplex-perl
    libio-socket-ssl-perl
    libio-zlib-perl
    libnet-ssleay-perl
    libunix-syslog-perl
    libtimedate-perl
    libmailtools-perl
    libconvert-binhex-perl
    libconvert-tnef-perl
    libconvert-uulib-perl
    libcompress-zlib-perl
    libarchive-zip-perl
    perl-suid
    apache2-suexec
    安装apache fcgilib
    apt-get install apache2-mod-fastcgi libfcgi-perl
    安装posfix
    apt-get purge postfix postfix-mysql postfix-doc
    安装courier-authlib
    apt-get install courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl
    修改authdaemon socket目录权限
    如果该目录权限不正确修改,maildrop及postfix等将无法正确获取用户的信息及密码认证:
    chmod 755 /var/spool/authdaemon
    重启
    /etc/init.d/apache2 restart
    /etc/init.d/postfix restart
    /etc/init.d/courier-authdaemon restart
    /etc/init.d/courier-imap restart
    /etc/init.d/courier-imap-ssl restart
    /etc/init.d/courier-pop restart
    /etc/init.d/courier-pop-ssl restart
    遇到的问题
    1.不能收信
    日志:Jan  9 12:10:21 testServer postfix/pipe[24667]: D75A442C079: to=<admin@hlg.cc>, relay=maildrop, delay=0.02, delays=0.01/0/0/0.01, dsn=5.1.1, status=bounced (user unknown. Command output: ERR: authdaemon: s_connect() failed: Permission denied Invalid user specified. )
    没有权限去读authdomain的socket文件,修改一下权限
    改变 authdaemon的权限为755   /var/run/courier/authdaemon/
    2.extman后台创建域
    /home/vmail 内没有创建该域目录
    解决办法:权限问题,/var/www/extsuite/extman/webman.cf 中把SYS_DEFAULT_UID = 1000 SYS_DEFAULT_GID = 1000 注释掉
    或者在apache的conf文件中把用户权限加上
    3.smtp 验证不成功
    修改 /etc/postfix/sasl/smtpd.conf

    pwcheck_method: authdaemond
    log_level: 3
    mech_list: PLAIN LOGIN
    authdaemond_path:/var/run/courier/authdaemon/socket