array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 CentOS6.4下邮件服务器搭建 CentOS6.4下邮件服务器搭建 - 爱码网
yueminghai

linux下邮件服务器的搭建大致分为三个步骤

  1. 准备工作(真实的生产环境下需要)
  2. 发送服务器安装及配置 (Postfix)
  3. 接收服务器安装及配置(dovecot)

一、 准备工作

1. 为邮件服务器添加DNS解析

虽然不加DNS解析也能把邮件发出去,但会被大多数邮件服务器当作垃圾邮件。根据我们的实际经验,需要添加三条DNS解析记录:A记录、MX记录、TXT记录

2. 准备存放邮件的硬盘空间

如果用的是阿里云入门级Linux服务器,有一块20G的数据盘未挂载,需要格式化并挂载

二、发送服务器安装及配置 (Postfix)

1、卸载Sendmail

查看当前服务器环境中是否已经安装了Sendmail 如果已经安装了 执行下面的命令进行卸载

yum -y remove sendmail

我使用的环境是CentOS6.4 默认没有安装sendmail

[root@localhost ~]# rpm -qa | grep sendmail

2、安装Postfix

查看当前服务器环境中是否已经安装了Postfix 如果没有安装了 执行下面的命令进行安装

yum -y install postfix*

我使用的环境是CentOS6.4 默认已经安装了Postfix

[root@localhost ~]# rpm -qa | grep postfix
postfix-2.6.6-2.2.el6_1.i686

3、配置Postfix

[root@localhost ~]# vi /etc/postfix/main.cf

以下配置示例假设要配置的域名是cnblogs.info,邮件服务器主机名是mail.cnblogs.info

a) 修改myhostname

myhostname = mail.cnblogs.info

myhostname 参数即是我们的邮件伺服器的主机名称,是由英文字母或数字所组成,比如www.google.com或mail.google.com就是一个Hostname

b) 修改mydomain

mydomain = cnblogs.info

mydomain参数设定网域名称(Domain Name),主机名称通常都是在建立在网域名称之内,像是www.google.com则是网页服务,mail.google.com则会是邮件主机服务,通常网域名称都会是主机名称(Hostname)去掉第一个掉包含前面的文字部份,比如说www.google.com的Domain则是google.com

c) 修改myorigin

myorigin = $mydomain

myorigin是我们的邮件位址在”@”后面的文字内容,比如像是me@medesky.me,medesky.me就是我们的Origin Name

d) 修改smtp监听端口

inet_interfaces = all

inet_interfaces 参数指定postfix系统监听的网络接口。Postfix预设只会监听来自于本机端的所传出的封包,必须使用上列设定,才可以传收所有来自于网路端的所有封包

e) 修改 inet_protocols

修改Postfix的通讯协定,目前网路的协定主流有IPv4与IPv6,在大部份的情况下,我们都是利用IPv4在通讯的,如果你的Mail Server没有需要使用到IPv6,可以做以下的设定修改

inet_protocols  =  ipv4 

f) 修改mydestination

mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost

mydestination参数设定能够接收信件的主机名称,Postfix预设只能收到设定的Hostname与Domain Name以及本机端的信件,此步骤是再增加能收信件的网路名称

g) 设定信任用户端

mynetworks = 127.0.0.0/8, 192.168.1.0/24, hash:/etc/postfix/access

mynetworks 参数设定信任的用户端,当要寄信时,会参考此值,若非信任的用户,则不会帮你的信件转到其它的MTA主机上

h) 设定relay_domain转发邮件域名

规范可以relay 的MTA 主机位址,通常这个都直接设为mydestination

检查” alias_maps”设定是否为以下字串设定

检查” alias_ database”设定是否为以下字串设定

4、重启postfix使设置生效(使smtp服务的25号端口打开)

复制代码
[root@localhost ~]# service postfix restart
关闭 postfix:                                             [确定]
启动 postfix:                                             [确定]
[root@localhost ~]# netstat -anp | grep :25
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      16331/master
tcp        0      0 :::25                       :::*                        LISTEN      16331/master
复制代码

5、测试

a) 寄信测试

此时我们已经可以利用此台主机使用smtp收送电子邮件了, 利用mail指令来测试

[root@localhost ~]# mail root@cnblogs.info
Subject: test
test
.
EOT

b) 收信测试

当我们从内部或外部寄信过来时,预设的邮件存放位址如下:

/var/spool/mail(或/var/mail)

从此目录里查看帐号名称的档案,我们所收发的信件都会存在这里

也可以通过 mail -u 命令查看

复制代码
[root@localhost ~]# mail -u root
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/mail/root": 1 message 1 new
>N  1 root                  Sat Jun 15 12:48  18/561   "test"
& 1
Message  1:
From root@cnblogs.info  Sat Jun 15 12:48:37 2013
Return-Path: <root@cnblogs.info>
X-Original-To: root@cnblogs.info
Delivered-To: root@cnblogs.info
Date: Sat, 15 Jun 2013 12:48:36 +0800
To: root@cnblogs.info
Subject: test
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: root@cnblogs.info (root)
Status: R

test

&
复制代码

三、接收服务器安装及配置(dovecot)

 1、安装dovecot

[root@localhost ~]# yum install -y dovecot*

2、配置dovecot

[root@localhost dovecot]# vi /etc/dovecot/dovecot.conf

a) 修改protocols支持pop3和imap

protocols = imap pop3

3) 启动dovecot服务并开启110、143端口

复制代码
[root@localhost dovecot]# service dovecot restart
停止 Dovecot Imap:                                        [失败]
正在启动 Dovecot Imap:                                    [确定]
[root@localhost dovecot]# netstat -anp | grep :110
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      17607/dovecot
[root@localhost dovecot]# netstat -anp | grep :143
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN      17607/dovecot

分类:

技术点:

相关文章: