邮件系统角色:
MTA:邮件传输代理 接受客户端发来的邮件,并可以转发给其他的MTA (如:postfix,senmail,exchange)
MUA: 邮件用户代理 为客户端提供一个结束发送邮件的界面 (如:outlook)
MDA:邮件分发代理 负责把邮件分发给邮件用户邮箱 在后台工作的程序
邮件协议:
SMTP: 简单邮件传输 客户端和MTA,MTA和MTA 之间用这个 25端口 如果是支持发信认识的邮件服务器 将采用扩展SMTP协议
pop3 邮局协议 用于从邮件服务器上收取邮件 110端口 离线协议
IMAP 互联网消息访问协议 也是收取邮件的 比pop3更强大灵活 也是离线协议 143端口
我用的RHEL5的系统 ,安装前先把sendmail服务停掉,完后设成开机不自动启动;
先把几个依赖的包用yum -y install db*-devel cyrus-sasl-* 准备做完了
1:建程序用户和组
- groupadd -g 1200 postdrop
- groupadd -g 1000 postfix
- useradd -M -u 1000 -g postfix -G postdrop -s /sbin/nologin postfix
2:解压,打补丁
- #tar zxvf postfix-2.xxxx.gz
- #gunzip postfixpostfix-2.4.6-vda-ng.path.gz
- #cd postfix-2.4.6
- #path -pl < ../postfix-2.4.6-vda-ng.patch
3:配置makefile文件
编译前需要用make makefiles调整参数 支持SASL和mysql README_FILES下有说明文件
- #make makefiles \
- > 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH \'
- >-DUSE_CYRUS_SASL -I/usr/include/sasl' \
- >'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2'
- //CCARGS 为编译提供额外的参数 -I 指出标准的额外头文件外置
- //AUXLIBS 指出位于标准位置之后的额外数据库
4:编译安装:
make && make install 执行完这个命令后会让设置一些参数 我都是使用默认了 除非有特殊要求 具体:
- install_root: [/] //指定系统的根目录
- tempdir: [] //postfix-install 脚本使用的临时文件位置
- config_directory //配置文件存放的目录
- command_directory //命令存放目录
- queue_directory //邮件队列存放目录
基本就安装完事了!!!
postfix目录 /etc/postfix 主配置文件 各种脚本 查询表等
/usr/libexec/postfix/ 各个服务器程序文件
/var/spool/postfix 邮件队列相关子目录 (incoming 传入 active 活动 deferred 推迟 hold 约束 corrupt 错误)
/usr/sbin 管理工具程序 (postalias 构建别名表 postconfig 显示和编辑主配置文件 postfix 启动关闭服务 postmap 修改查询表 postqueue 管理邮件队列 postsuper 管理邮件队列 有root权限)
postfix服务器的配置文件包括 /etc/postfix/main.cf (postfix) /etc/postfix/master.cf (master)
使用:
postconf 显示当前postfix所使用的配置参数 加-n 只列出不同于默认值的配置选项
可以使用它来简化主配置文件
- #cd /etc/postfix (切换到主配置文件所在的目录)
- #postconf -n > main2.cf (用那个命令显示一下postfix的配置 加-n的话就是显示不同于默认选项的配置 完后从新定向到main2.cf中)
- #mv main.cf main.cf.bak (把之前的主配置文件改名 也就是备份一下)
- #mv main2.cf main.cf (把用命令做的主配置文件改成默认主配置文件)
- #cat main.cf (可以显示一下我们最后做完的结果)
postfix日志位于 /var/log/maillog中:
tail -f /var/log/maillog 动态查看日志
- egrep '(reject|warninf|error|fatal|panic):' /var/log/maillog
只过滤那几个级别的日志文件
启动: postfix start 之后去看25口是否监听
postfix check 检查配置文件 postfix reload 重新加载
配置postfix让他可以使用:
编辑主配置文件,调整基本运行参数:
- vi /etc/postfix/main.cf
- inet_interfaces = all //监听的ip,看情况改
- myhostname = mail.benet.com //postfix服务器使用的主机名
- mydomain = example.com //使用的邮件域
- myorigin = $mydomain //外发邮件发件人地址中的邮件域名
- mydestination = $mydomain, $myhostname //设置可接受邮件地址中的域名
- home_mailbox = Maildir/ //设置邮件存储位置和格式 有两种 mailbox 和 maildir
添加邮件账户:默认使用本机系统用户作为邮件帐号
- #groupadd mailusers
- #useradd -g mailusers -s /sbin/nologin zhangsan
- #useradd -g mailusers -s /sbin/nologin lisi
- #passswd zhangsan
- #passwd lisi
SMTP测试发邮件:
- #telnet localhost 25 //telnet25口
- 220 mail.example.com ESMTP postfix
- helo localhost //宣告客户端主机地址
- mail from: [email protected] //宣告服务器发件人地址
- rcpt to: [email protected] //告知服务器收件人地址
- data //告知服务器要传输数据
- subject: a test mail //邮件主题
- hello this is a test mail!!! //邮件内容
- . //邮件以.结束 回车
- quit //完事 退出
可以到相应的用户宿主目录下的maildir/new/看是不是有刚才的邮件