CentOS6.5安装配置postfix邮件系统 启用并配置SMTP虚拟账户教程

CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP虚拟账户 实录
开启用户注册的邮件检验功能,需要发送邮件,使用其他服务商的邮件服务总有每日和发送间隔发送邮件限制.
废话不多说主要实现功能为设置postfix配置,启用smtp服务帐号,只用来发送邮件验证和newsletter邮件

一:配置postfix及简单简介

开始之前,先介绍几个枯燥的名词:

MUA:用户代理端,即用户使用的写信、收信客户端软件。比如:outlook、foxmail等客户端软件,乃至通过浏览器登录邮箱并发送邮件的BS架构网页也算是MUA。
MTA:邮件传送端,即常说的邮件服务器,用于转发、收取用户邮件。本文之中的postfix实现的就是MTA,当然postfix也是一种特殊的MUA,不再深入介绍,本文之中仅把postfix当做MTA使用。
MDA:邮件代理端,相当于MUA和MTA的中间人,可用于过滤垃圾邮件。
POP:邮局协议,当前是第三版,也就是POP3,用于MUA连接服务器收取用户邮件,通信端口110。
IMAP:互联网应用协议,功能与POP类似:也用于MUA连接服务器收取用户邮件;功能较POP多,通信端口143。
SMTP:简单邮件传送协议,MUA连接MTA或MTA连接MTA发送邮件使用此协议,通信端口25,启用ssl/tls的情况下端口为465或587。
一般发邮件的步骤流程是:

1、MUA通过POP、IMAP或SMTP协议连接MTA(称之为mta1);本文之中php通过phpmailer请求发送邮件的php脚本就扮演了MUA的角色,而postfix就是MTA;

2、MUA发送邮件给mta1(或者说MUA通过mta1发送邮件);本文中postfix就是这个mta1;

3、mta1与其他的MTA自主沟通连接将邮件传送至指定域下的指定用户(此时mta1就扮演了MUA的角色功能,这种交互是由邮件系统软件自主实现,与用户端无关)。

本次搭建postfix目的很明确:

用于php开发的web环境下新用户注册时发送验证码邮件—php下通过phpmailer类库的smtp协议链接postfix来发送邮件。
web环境与postfix在同一台CentOs6.5(64位)系统下,postfix不对外提供smtp亦不转发外部MUA邮件,仅转发(或发送)web环境下(MUA)的邮件,也就是仅转发本机(或者说本域)邮件。同时也不接收其他MTA的邮件(也就是说不接受他人发过来的邮件)。
本文就不介绍postfix、sasldb2、saslauthd等软件了,网上一大把。
本文配置postfix的目的通俗的讲就是:本机PHP脚本(MUA)通过smtp协议连接本机postfix(MTA),发送邮件到指定邮箱;本机postfix不转发(或发送)其他MUA的邮件,也不接收其他MTA转过来(发送过来)的邮件(也就是说本机postfix下的邮箱不接收邮件)。或这么讲:本机postfix启用smtp服务,但不对公网开放25端口;既然有smtp就会有账号和密码,postfix可以用centos系统的账户和密码,但这种方式总觉得不安全,所以启用sasldb2提供postfix的smtp虚拟账户和密码—这样即简洁也是postfix开发组推荐的方式。

二:postfix的安装

centos6.5默认自带postfix,便于说明,有些系统mail服务默认为sendmail,渣渣不理它也卸载掉,并更改服务器的mta:

需要注意的是,卸载postfix会同步卸载掉定时服务crontabs,务必在卸载后重新安装。

#开始yum安装前  更换yum源 建议aliyun源  参考:http://blog.i5a6.com/1548.html (如果是国外云主机,感觉更换不更换无所谓,下载时间都差不多)
#备份原先的yum源信息
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#从阿里云镜像站下载centos6的repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#最后yum重新生成缓存
yum makecache
 
yum remove sendmail #卸载sendmail
yum remove postfix #卸载postfix
yum install postfix #重新安装postfix
#yum安装会自动建立postfix用户组和用户名
yum install crontabs #因为卸载postfix的时候系统定时服务也被卸载 核心服务 也同步安装下
安装sasldb、saslauthd 检验服务权限部分

postfix开机启动设置,因为采用sasldb2提供postfix的smtp账户和密码,无需saslauthd服务运行,故而saslauthd服务不用启动—看吧,使用sasldb2还减少资源占用:

yum install cyrus-sasl*  #提供smtp的虚拟账户和密码服务
#sasldb2包含在saslauthd当中 就不要再问为什么没有安装sasldb2的shell代码了
#当前mta查看
alternatives --display mta
#设置mta
/usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix
#再次查看mta
alternatives --display mta
#输出结果最后一行会有类似如下的提示:mta即设置完毕
#Current `best' version is /usr/sbin/sendmail.postfix.
 
#启动运行
chkconfig postfix on

三:postfix配置并启用smtp

postfix配置文件在/etc/postfix目录下,主要修改的配置文件为:/etc/postfix/main.cf,配置说明详见代码段:

vi /etc/postfix/main.cf #vi编辑postfix配置文件
#找到如下配置项酌情修改
######
myhostname =  mail.i5a6.com 
#postfix主机名,修改成你的域名 此项需要添加A记录并指向postfix所在主机公网IP
mydomain   =  i5a6.com 
#域名
myorigin   =  $mydomain
#本机postfix的邮箱域名后最 此项默认值使用myhostname
#此处使用了前项mydomain 也就是说本机postfix邮箱后缀为:@i5a6.com
inet_interfaces = localhost
#指定postfix系统监听的网络接口 此处必须是localhost或127.0.0.1或内网ip
#若注释或填入公网ip  服务器的25端口将对公网开放
#默认值为all 即监听所有网络接口
#此项指定localhost后 本机postfix就只能发邮件不能接收邮件
inet_protocols = ipv4
#网络协议 ipv6在国内还不怎么普及 这里ipv4即可
mydestination = $myhostname, localhost.$mydomain, localhost
#指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix系统要接收什么样的邮件。
#此项配置中$myhostname表示postfix接受@$myhostname为后缀的邮箱的邮件 逗号分割支持指多项
#此项默认值使用myhostname
local_recipient_maps =
#此项制定接收邮件的规则 可以是hash文件 此项对本次配置无意义 可以直接注释
mynetworks = 8.8.8.8, 10.200.9.xxx, 127.0.0.1
#指定你所在的网络的网络地址
#鄙人生产服务器公网IP8.8.8.8(开玩笑我哪有这个ip)、内网ip10.200.9.xxx(第四位做了隐藏)、以及localhost的ip127.0.0.1
#请依据实际情况修改
smtpd_banner = IA ESMTP Server
#指定MUA通过smtp连接postfix时返回的header头信息
#原始配置附带有postfix版本号 去掉即可,此项酌情处理
#SMTP Config
broken_sasl_auth_clients = yes
#指定postfix兼容MUA使用不规则的smtp协议--主要针对老版本的outlook  此项对于本次配置无意义
smtpd_client_restrictions = permit_sasl_authenticated
#指定可以向postfix发起SMTP连接的客户端的主机名或ip地址
#此处permit_sasl_authenticated意思是允许通过sasl认证(也就是smtp链接时通过了账号、密码效验的用户)的所有用户
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
#发件人在执行RCPT TO命令时提供的地址进行限制规则  此处照搬复制即可
smtpd_sasl_auth_enable = yes
#指定postfix使用sasl验证 通俗的将就是启用smtp并要求进行账号、密码效验
smtpd_sasl_local_domain = $mydomain
#指定SMTP认证的本地域名  本次配置可以使用 smtpd_sasl_local_domain = '' 或干脆注释掉 默认为空
smtpd_sasl_security_options = noanonymous
#取消smtp的匿名登录  此项默认值为noanonymous smtp若能匿名登录危害非常大 此项请务必指定为noanonymous
message_size_limit = 5242880
#指定通过postfix发送邮件的体积大小 此处表示5M
######
查看postfix配置文件的所有配置项:

postconf #不带任何命令参数 即可输出所有postfix配置项以及默认值

四:sasldb2建立smtp用户和密码

smtp的账户密码建立也就是建立邮箱账户(类似test@i5a6.com的邮箱地址)

#配置postfix启用sasldb2作为smtp的账号秘密效验方式
#编辑通过sasl启用smtp账号密码效验的配置
vi /etc/sasl2/smtpd.conf #vi写入或编辑内容如下:
#####
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login CRAM-MD5 DIGEST-MD5
#####
#这里需要注意的是:这个配置文件的位置是64位机器上的,32位机器应该在:/usr/lib/sasl2/smtpd.conf
 
#创建smtp账号
saslpasswd2 -c -u `postconf -h mydomain` test #回车会要求输入密码,连续两次
#表示创建test@$mydomain的邮箱账号(也是smtp的账号)和密码
#本例就是创建test@i5a6.com账号和密码
#此处注意的是smtp登录用的账号并不是单纯的用户名  而是整个邮箱地址字符串
#假设此处设置的smtp账号test@i5a6.com密码为test123  下方测试时要用到
 
#查看sasldb2的用户和密码
sasldblistusers2
#此命令进用户查看sasldb的用户情况
#此命令回车后会输出诸如这样的内容:test@i5a6.com: userPassword
 
#每次添加smtp用户完毕之后需重启postfix或reload
测试postfix配置文件并启动postfix

#测试postfix配置文件
service postfix check
#没有问题的话会返回着色[ok]字样
#启动postfix
service postfix start
#设置postfix开机启动
chkconfig postfix on
#更改sasldb2数据的权限,让postfix可以读取
chmod 755 /etc/sasldb2
五:测试smtp

直接本机telnet,上述添加的test@i5a6.com账号和test123密码需要base64编码,编码后的字符串为:

test@i5a6.com为:xxxxxxxxb20uY24=
test123为:dGVzdDEyMw==
telnet测试时需要用到,base64编码太简单就不多做解释,例如php的函数base64_encode()

#若没安装telnet 需安装telnet
yum install telnet
 
#telnet测试smtp连接postfix
telnet 127.0.0.1 25 #回车后会显示由$smtpd_banner配置的欢迎信息
EHLO jjonline  #输入ehlo消息头进行握手 消息返回后继续
AUTH LOGIN  #要求进行smtp账号密码效验  返回后输入test@i5a6.com的base64编码
xxxxxxxxb20uY24=  #返回后输入test123密码 也是base64编码
dGVzdDEyMw== #回车后就会显示smtp效验成功  接下来还可以测试发送邮件功能 本文就不再做示例了
 
#注意  要退出telnet 输入quit回车即可
自此,自建postfix并启用smtp和smtp的虚拟账号完成

六:域名解析记录设置

postfix配置完毕,想要通过这台postfis邮件服务器发送的邮件被其他邮箱服务商所接受,还需要做A记录、txt记录还mx记录,请适配你自己的域名和ip地址。截图如下:
sp

七:使用telnet发送邮件成功

[root@iZ62rh0rx0bZ ~]# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 IA ESMTP Server
EHLO IA
250-mail.i5a6.com
250-PIPELINING
250-SIZE 5242880
250-VRFY
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN
250-AUTH=DIGEST-MD5 CRAM-MD5 PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH LOGIN
334 VXNlcm5hbWU6
dGVzdEBpYXRvZG8uY29t
334 UGFzc3dvcmQ6
dGVzdDEyMw==
235 2.7.0 Authentication successful
MAIL FROM:<test@i5a6.com>
250 2.1.0 Ok
RCPT TO:<hongxin571@126.com>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
TO:hongxin571@126.com
FROM:test@i5a6.com
SUBJECT:test by telnet/smtp
test from IA SERVER code.
.
250 2.0.0 Ok: queued as 88F64C061C

时间: 2024-10-24 20:20:45

CentOS6.5安装配置postfix邮件系统 启用并配置SMTP虚拟账户教程的相关文章

Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

原文地址:http://54im.com/openldap/centos-6-yum-install-openldap-phpldapadmin-tls-%E5%8F%8C%E4%B8%BB%E9%85%8D%E7%BD%AE.html 钿畑的文章索引 1.概念介绍 2. 环境介绍 2. 准备工作 3. yum部署ldap 4. phpldapadmin安装 5.ldap客户端配置 6.用户目录自动挂载 6.1 服务器端配置 6.2 客户端配置 7.配置TLS传输加密 8.配置openldap双

配置与管理FTP服务器:提供虚拟账户FTP服务

[任务分析与要求] 在完成上文的匿名账户与本地账户的FTP服务后,本任务要求提供对外Internet的FTP服务 需要2个账户,账户名分别为upload和download,其中upload允许上载及下载 [软硬件环境] 使用虚拟机与真实主机结合的实训环境 在Vmware虚拟机系统中安装Red Hat Enterprise Linux Server 5.0 在硬盘上有Linux安装光盘的ISO文件 [步骤分解] 1.创建虚拟账户的文本文件 2.使用db_load命令将上面的login.t

CentOS6环境安装VNC远程桌面环境及FireFox/Flash Player的教程

老蒋在之前的博客文章中分享过不少关于VNC远程桌面环境的搭建和部署,大部分都是基于CentOS5环境的,今天这位朋友需要在ConoHa VPS服务器中安装VNC,熟料最低版本是CentOS6,版本不同安装方法肯定是不同的.同样的,在众多VNC环境中,XFCE环境是最为节省资源的,所以也需要安装XFCE桌面环境.   根据项目的需要还需要安装简体中文语言包.FireFox火狐浏览器.Flash Player组件支持,所以在这篇文章中,老蒋就基于CentOS6环境完整的部署XFCE VNC环境做一个

centos6.5安装vncserver图文教程_Linux

centos6.5安装vncserver 简介 VNC (Virtual Network Computer)是虚拟网络计算机的缩写,VNC 是一款优秀的远程控制工具软件. 安装VNC服务 首先确认虚拟机已经安装了桌面环境,例如:gnome等 # vi /etc/inittab 启动级别改为5 id:5:initdefault: 安装VNC服务 # yum install pixman pixman-devel libXfont -y # yum install tigervnc tigervnc

Ubuntu 12.04上安装和配置Postfix邮件服务详细教程

邮件服务器配置之所以麻烦是因为需要了解很多东西,牵涉到域名服务 DNS/Bind,Web 收发邮件 Apache/PHP/MySQL/SquirrelMail,认证服务 LDAP, Kerberos, PAM,邮件通常存放在额外存储上还要 NFS/SAN,邮件服务 Postfix/Dovecot,反垃圾反病毒 Postgrey/Clam AV/SpamAssassion,安全认证 SSL,监控和备份等等,这一套下来基本包括了 Linux 系统管理的方方面面,所以说配置一个安全可靠的企业级邮件系统

CentOS6.5安装与配置Yum命令的教程

一.介绍 有时候为了方便下载包,网速又不快,所以使用搭建本地yum.优点是能快速安装所需要的包和工具,缺点是无法在线更新.一共有两个方法 二.安装与配置 (方法一) 1.下载镜像文件,如果有的话,可以省略这步的 cd /usr/local/src #进入目录 wget http://mirrors.163.com/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1.iso #下载镜像文件 2.挂载镜像 mkdir -p /usr/local/yum

Centos6.5安装Cloudstack 4配置图文教程

1. 登录web界面 启动成功能后,你现在就可以用谷歌.火狐浏览器访问管理节点啦: http://管理节点ip:8080/client 我这里给了个域名 http://cloudstack.54im.com 注:IE访问可能有兼容性问题. Cloudstack基于tomcat提供web服务,默认使用了8080端口.如果你想改用其它端口,可以修改 /etc/tomcat6/server.xml 文件进行配置. Cloudstack默认安装在 /etc/cloudstack/management 目

在Linux中安装配置Postfix来搭建邮件发送服务

在创建网站应用时,在用户进行某些操作时需要发邮件给用户是一种必不可少的操作.云服务虽然是一个不错的选择.但如果体量太小,或是受到某些条件限制时,自建服务也许是一个更好的选择.下面尝试在 CentOS 7 中搭建发送邮件的功能. 安装 Postfix postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试.在Internet世界中,大部分的电子邮件都是通过s

[转]CentOS-6.3安装配置SVN

安装说明 系统环境:CentOS-6.3 安装方式:yum install (源码安装容易产生版本兼容的问题) 安装软件:系统自动下载SVN软件   检查已安装版本 #检查是否安装了低版本的SVN [root@localhost /]# rpm -qa subversion #卸载旧版本SVN [root@localhost modules]# yum remove subversion 安装SVN [root@localhost modules]# yum install httpd http