firemail

标题: Postfix邮件服务器 [打印本页]

作者: java    时间: 2017-12-1 14:06
标题: Postfix邮件服务器
本帖最后由 java 于 2017-12-5 16:15 编辑

Postfix是用来替代Sendmail的,它的配置文件比Sendmail简单得多,配置相当容易。
在配置邮件服务器之前,先解释几个概念。
我们通常使用Email都很容易,但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于最终用户而言,我们熟悉的Outlook,Foxmail等都是用来收信和发信的,称之为MUA:Mail User Agent,邮件用户代理。
MUA并非直接将邮件发送至收件人手中,而是通过MTA:Mail Transfer Agent,邮件传输代理代为传递,Sendmail和Postfix就是扮演MTA的角色。
一封邮件从MUA发出后,可能通过一个或多个MTA传递,最终到达MDA:Mail Delivery Agent,邮件投递代理,邮件到达MDA后,就存放在某个文件或特殊的数据库里,我们将这个长期保存邮件的地方称之为邮箱。
一旦邮件到达邮箱,就原地不动了,等用户再通过MUA将其取走,就是用Outlook,Foxmail等软件收信的过程。
所以一封邮件的流程是:
发件人:MUA --发送--> MTA -> 若干个MTA... -> MTA -> MDA <--收取-- MUA:收件人
MUA到MTA,以及MTA到MTA之间使用的协议就是SMTP协议,而收邮件时,MUA到MDA之间使用的协议最常用的是POP3或IMAP。
需要注意的是,专业邮件服务商都有大量的机器来为用户服务,所以通常MTA和MDA并不是同一台服务器,因此,在Outlook等软件里,我们需要分别填写SMTP发送服务器的地址和POP3接收服务器的地址。
https://www.liaoxuefeng.com/article/00137387674890099a71c0400504765b89a5fac65728976000


作者: java    时间: 2017-12-1 14:21
本帖最后由 java 于 2017-12-5 11:19 编辑

http://www.postfix.org/
Stable releases are called "Postfix a.b.c", where a is the major release number, b is the minor release number, and c is the patchlevel.
Chinese

作者: java    时间: 2017-12-1 14:30
本帖最后由 java 于 2017-12-1 14:44 编辑

第十九章、主機名稱控制者: DNS 伺服器



簡易 Mail Server 架設 -- Sendmail 設定

簡易 Mail Server 架設 -- Postfix 設定

作者: java    时间: 2017-12-5 16:15
本帖最后由 java 于 2017-12-5 18:00 编辑

安装配置postfix邮件系统 启用并配置SMTP虚拟账户
http://blog.jjonline.cn/linux/185.html






本机postfix启用smtp服务,但不对公网开放25端口;既然有smtp就会有账号和密码,postfix可以用centos系统的账户和密码,但这种方式总觉得不安全,所以启用sasldb2提供postfix的smtp虚拟账户和密码---这样即简洁也是postfix开发组推荐的方式。

yum list installed | grep sasl
我的是最小化安装的,默认已经带了postfix和saslauthd。
但是这个cyrus-sasl-plain没有,还是需要安装的。
yum -y install cyrus-sasl-plain

(1)修改IP地址:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
NAME="System etho"
IPADDR=192.168.3.58
GATEWAY=192.168.3.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
USERCTL=no

(2)确定系统主机名, hostname 可以查出
设置主机名:

vi /etc/sysconfig/network
HOSTNAME=mail.myserver.com


(3)设置指定的域名解析地址
vi /etc/hosts
127.0.0.1   mail mail.myserver.com localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         mail mail.myserver.com localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.134.106 mail.myserver.com

service network restart

启动相关防火墙设置 可关闭防火墙
https://www.cnblogs.com/eaglezb/p/6073739.html
Centos 7 firewall 命令
CentOS 7 以下版本 iptables 命令



yum remmove postfix #卸载postfix

yum install postfix #重新安装postfix

#yum安装会自动建立postfix用户组和用户名
yum install crontabs #因为卸载postfix的时候系统定时服务也被卸载 核心服务 也同步安装下


安装sasldb、saslauthd
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.



postfix配置并启用smtp


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

#vi编辑postfix配置文件
#找到如下配置项酌情修改

myhostname =  mail.myserver.com
#postfix主机名,修改成你的域名 此项需要添加A记录并指向postfix所在主机公网IP
mydomain   =  myserver.com
#域名
myorigin   =  $mydomain
#本机postfix的邮箱域名后缀 此项默认值使用myhostname
#此处使用了前项mydomain 也就是说本机postfix邮箱后缀为:@myserver.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
安装配置postfix邮件系统 启用并配置SMTP虚拟账户
local_recipient_maps =
#此项制定接收邮件的规则 可以是hash文件 此项对本次配置无意义 可以直接注释

mynetworks = 42.121.107.189, 10.200.9.xxx, 127.0.0.1
#指定你所在的网络的网络地址
#鄙人生产服务器公网IP42.121.107.189、内网ip10.200.9.xxx(第四位做了隐藏)、以及localhost的ip127.0.0.1
#请依据实际情况修改

smtpd_banner = JJonline.Cn 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
smtpd_sasl_path = smtpd
smtpd_sasl_authenticated_header = yes   ← 从头信息查找用户名

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


五、sasldb2建立smtp用户和密码

某种意义上来讲:smtp的账户密码建立也就是建立邮箱账户(类似hcj@myserver.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` hcj #回车会要求输入密码,连续两次
#表示创建hcj@$mydomain的邮箱账号(也是smtp的账号)和密码
#本例就是创建hcj@myserver.com账号和密码
#此处注意的是smtp登录用的账号并不是单纯的用户名  而是整个邮箱地址字符串
#假设此处设置的smtp账号hcj@myserver.com密码为test123  下方测试时要用到

#查看sasldb2的用户和密码
sasldblistusers2
#此命令进用户查看sasldb的用户情况
#此命令回车后会输出诸如这样的内容:test@jjonline.com.cn: 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










欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3