参考
文库关键词:构建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
/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