为Postfix添加TLS支持

近来邮件服务器上暴破的机器人越来越多,居然还破了几个用户的密码,用来发送垃圾邮件,好贱!琢磨着怎么改进一下这种情况,但是除了限制访问频率,似乎没有别的好方法,顺便把smtp和pop3都改为了ssl支持,也就是smtps和pop3s。

由于原有的邮件系统架设于courier-imap+postfix,所以启用pop3s是很简单的事情,两步操作即可:

1,生成crt:/usr/local/share/courier-imap/mkpop3dcert,执行完成后,会在当前目录生成一个被叫做pop3d.pem的文件。

2,启动courier-imap-pop3d-ssl即可,当然了,同时关闭掉courier-imap-pop3d。

接下来我们启用postfix的smtps,首先当然是生成crt,由于postfix要求有CA crt,所以呢,不能生成一个self-verification的crt,必须先整一个CA,这个流程和之前生成Openvpn证书的类似,这里就不多说了。

证书生成之后呢,我们添加一点点配置到postfix的main.cf里面:

#################TLS Support################
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = no
smtp_tls_CAfile = /usr/local/etc/postfix/certs/cacert.pem
smtp_tls_cert_file = /usr/local/etc/postfix/certs/servercert.pem
smtp_tls_key_file = /usr/local/etc/postfix/certs/serverkey.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/certs/cacert.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/certs/servercert.pem
smtpd_tls_key_file = /usr/local/etc/postfix/certs/serverkey.pem
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 3
smtpd_starttls_timeout = 60s

然后还需要修改一下master.cf,在smtp监听那一行下面,添加smtps的监听:

smtps inet n – n – – smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

最后,重启一下postfix,设置客户端就可以了,465和995哦亲!不要设置错了哦亲!

Postfix Packages for Solaris 10

由于sendmail一直有个myhostname 的问题,必须要修改系统参数,才能让sendmail发送合法的邮件,然而,因为业务需要,有些服务器的主机名一旦设置完成,就不太方便修改,真是有点低级趣味,postfix可以在main.cf中设置hostname,这样就方便得多,于是安装一只postfix就很有必要了,在Linux上的安装很简单,在Solaris上却是麻烦不断,于是干脆找了一个二进制包:http://ihsan.dogan.ch/postfix/

首先当然要卸载系统自带的sendmail:

# svcadm disable sendmail
# pkgrm SUNWsndmu
# pkgrm SUNWsndmr

然后在线安装,作者提供了四种版本的postfix,我这里只需要Sparc平台的版本:

# pkgadd -d http://ihsan.dogan.ch/postfix/downloads/CNDpostfix-2.8.4,REV=110727-SunOS5.10-sparc.pkg CNDpostfix

当然,也可以下载来安装,装完之后呢把postfix添加到系统服务:

# svcadm enable svc:/network/postfix:default

然后呢修改一下/etc/postfix/main.cf,添加一行就可以了,把需要添加的发送主机名填进去:

myhostname = mail.qq.com

当然了还要重启一下postfix:svcadm restart postfix

Linux系统管理入门必须经历的三步

Linux系统管理员如何入门?这是很多Linux新手们关心的问题。一位CentOS的开发者,在英国伦敦工作的系统管理员Karanbir Singh近日撰写了一篇博文,对Linux新人如何进入Linux sysadmin的世界进行了阐述。以下为全文译文:

SA,大神与装机男:运维的工作到底啥样儿?

我们常常会看到这样的问题:面对 Linux 系统管理这个庞大的世界,应该从哪里开始?说实话,我觉得这个问题不存在一个清晰明确的答案。Linux 认证并非最理想的选择。你可以去参加一些培训课程,比如 RHCE。但是,如果没有任何背景信息而去参加培训,你可能无法享受到培训带来的好处,因为所有课程都有一个前提假设:你已经掌握了一些基本知识。

熟悉Linux以及发行版

一个开始系统管理员学习的方法是抓起一本相关主题的书来看(编辑推荐:51CTO读书频道的Linux版块有很多相关图书的样章)。然后安装几 个 Linux 版本(参考:几个比较知名的发行版),然后在你喜欢的版本上搞一些 VM 设置(参考:Linux下三大免费桌面虚拟机评测)。从一个版本开始,然后继续使用这个版本,至少用上几个月。但是,一旦熟悉了那些基础知识,你就要转向 其他发行版本,看看其他版本是如何工作的,这一点也非常重要。无论使用哪个版本,不同之处仅仅在于一些设计和平台常见通讯。最根本的操作系统还是 Linux,这一点不会改变。

使用一个新的平台时,有一点非常重要:你必须真正地投入进去。对此,有一个简单的方法:看看你现在正在做的事情,无论使用哪个平台,试着在这台 Linux 计算机上使用相同的方式去做系统的事情。掌握了那些基础的知识和操作之后,以后你就应该将这个 Linux 版本作为常用的工作平台。从低等级管理能力方面来看,这种方式并不会让你学到太多;不过,它可以让你学会从用户的角度来思考问题。

我一直都认为,最优秀的管理员一定是从用户的角度,从开发者的角度,然后从平台(和管理员)的角度,对问题进行思考。最后我们还要记住,计算机是用来工作的,而管理员的角色就是确保计算机能够充分发挥能力来完成工作。不要迷失了方向:目标仍然是做某件工作。

熟悉相关的应用程序/服务

我最初接触 Linux 的那段时间,常常会感觉很难与其他人的应用程序建立一种关联,很难弄清楚他们如何使用他们的计算机和网络。之所以很困难,因为我没有处于他们所在的位置, 甚至连跟上最新的情况都很困难。在寻找那种亲身体验的机会时,我认识到,和一个应用程序建立关联的最好方式就是加入他们的邮件列表。这样,你就可以看到其 他人遇到的问题,你也可以提出自己的问题,比如为什么那个事情要用那种特别的方式来解决,你还可以查看其他人贴出的 bug 报告。这些信息都清楚了展示了在“真实世界”中人们是如何使用这个应用程序的,这将为提供一个很好的根基。大约 14 年之后,我仍然认为特定程序的用户小组是学习一个应用程序的最好场所,你可以了解到如何对它进行管理,最好的部署方式,还有开发者/用户如何看待这个应用 程序的角度。

编写代码

最后,编程和实际写代码的能力也是有益的。不要相信那种到处流传的说法:管理员无需写代码。和周围优秀的系统管理员聊聊(有很多这样的人),你 会发现,几乎每个人都会告诉你,他们 40-60% 时间用于编写脚本,处理应用程序,而脚本的开发知识是有帮助的。我不是说你需要搞一个 Java 认证,但是你要对 bash 的基本编程有很好理解,至少能够使用 python、perl 和 ruby 中的一门语言(必要)。需要了解 unix/c 的传统想法仍然存在,不过现在,并不是有很多系统管理员需要深入到驱动程序开发那个层次,他们需要了解的大多数函数代码可以利用 bash、ruby、perl 或 python 进行很好的处理。

Linux各发行版本优缺点点评

Linux最早由Linus Benedict Torvalds在1991年开始编写。在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及GNU项目,并不断的编写创建GNU程序(此类程序的许可方式均为GPL: General Public License)。在不断的有杰出的程序员和开发者加入到GNU组织中后,便造就了今天我们所看到的Linux,或称GNU/Linux。

  Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。下面介绍一下各个发行版本的特点:

  Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。

  Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing和unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。Debian最具特色的是apt-get /dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去:)

  Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。

  Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。

  最后,介绍一下FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支:stable和current。顾名思义,stable是稳定版,而current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对新硬件的支持没有Linux完备,所以并不适合作为桌面系统。

下面给为选择一个Linux发行版本犯愁的朋友一些建议:

  如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大量的钱购买商业软件,那么你就需要一款适合桌面使用的Linux发行版本了,如果你不想自己定制任何东西,不想在系统上浪费太多时间,那么很简单,你就根据自己的爱好在ubuntu、kubuntu以及xubuntu中选一款吧,三者的区别仅仅是桌面程序的不一样。

  如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,想让自己的机器跑得更欢,不介意在Linux系统安装方面浪费一点时间,那么你的唯一选择就是Gentoo,尽情享受Gentoo带来的自由快感吧!

  如果你需要的是一个服务器系统,而且你已经非常厌烦各种Linux的配置,只是想要一个比较稳定的服务器系统而已,那么你最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。

  如果你需要的是一个坚如磐石的非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。

  如果你需要一个稳定的服务器系统,而且想深入摸索一下Linux的各个方面的知识,想自己定制许多内容,那么我推荐你使用Gentoo。

深解CentOS系统单用户模式

通过对CentOS系统长时间的学习,我们懂得了更多知识,CentOS系统处于正常状态时,服务器主机开机(或重新启动)后,由系统引导器程序自动引导 Linux 系统启动到多用户模式,并提供正常的网络服务。如果系统管理员需要进行系统维护或系统出现启动异常时,就需要进入单用户模式或修复模式对系统进行管理了。

使用单用户模式有一个前提,就是您的系统引导器(grub)能正常工作,否则要进行系统维护就要使用修复模式。特注:进入单用户模式,没有开启网络服务,不支持远程连接

CentOS系统中不同的运行级别(Run Level)代表了系统的不同运行状态,例如 Linux 服务器正常运行时处于运行级别3,是能够提供网络服务的多用户模式;而运行级别 1 只允许管理员通过服务器主机的单一控制台进行操作,即“单用户模式”。

以CentOS系统为例:

CentOS系统进入单用户模式

进入单用户模式的前提是CentOS系统引导器能正常工作。下面以 GRUB 为例说明进入方法。在 GRUB 启动菜单里有“a”、“e”和“c”三个操作按键,使用这三个按键均可进入单用户模式。

使用“a” 操作按键进入单用户模式—推荐:简单操作

这是CentOS系统进入单用户模式最快速的方法。在 GRUB 启动菜单里使用 “a” 操作按键编辑 kernel 参数,在行末输入 single ,以告诉 Linux 内核后续的启动过程需要进入单用户模式,回车即可。

进入单用户模式之后

当CentOS系统进入单用户模式时,不需要输入用户名和口令,CentOS系统启动完成后将直接获得管理员 root 的权限,控制台的提示符为“#”。

单用户模式下的控制台界面

在上面的启动信息中有一条信息很关键: Remounting root filesystem in read-write mode:[OK]表示此时单用户模式下的根文件CentOS系统处于可读可写状态。只有根文件系统是可读写的,CentOS系统管理员才能对系统进行维护。若系统的配置与脚本文件出现错误,单用户模式下的根文件系统进入“read-only file system”只读状态,此时,可以使用如下命令以读写方式重新挂装根文件系统:

以下是代码片段:
sh-3.1 # mount -o remount rw -t ext3 /
当 CentOS系统进入单用户模式后,由于已经停止了任何网络服务和网络配置(网络接口无效),不会有任何其他人(通过网络)干扰CentOS系统的运行状态,管理员可以放心的对CentOS系统进行系统级别的维护操作。在单用户模式下 CentOS系统除了不具备网络功能外,是功能完整的操作系统。在单用户模式下可以进行如下的维护和管理工作:

重新设置超级用户口令

维护CentOS系统的分区、LVM 和文件系统等

进行CentOS系统的备份和恢复

单用户模式的一个典型应用是 root 用户的“口令设置”。对于一些临时使用或实验用途的 CentOS系统,经常会更换使用者,而 root 用户的口令可能会被遗失,这时可以进入单用户模式更改 root 用户的口令。

以下是代码片段:
sh-3.1 # passwd
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

当CentOS系统进入单用户模式后,在“#”提示符下执行 passwd 命令可以更新 root 用户的口令,当CentOS系统重新启动后就可以使用已更新的口令以 root 身份登录系统了。

微软将在Hyper-V中支持红帽Linux

微软将在Windows Hyper-V中支持红帽Linux作为客户操作系统,但在近日的OSCON 2011上,微软对这一新闻持沉默态度,可能是因为人们对Windows巨人企图进入开源的愤怒还未消退。

OSCON参会人兼软件架构师Bryan Davis并不受感动,他说:“相同的事情,不同的日期罢了。微软把开源为它们封闭系统上的免费插件,核心技术是占用和创建进程。”

随即Twitter上软件开发员Luke Closs回应了这样一条评论:“关于微软在#OSCON#上的主旨:这是个陷阱!”

其他人称微软的动机实际是自利。SkySQL的CEO Uls Sandberg说:“这很简单。微软这么做是要赚钱。”

在某大型科技公司就知的一句经理也有相似的指责,他的公司支持多厂商的IT部署。他通过电子邮件说:“如果IT商店真得进入混合环境,无论怎么说VMware也有机会。Hyper-V确实不仅仅是一个微软独有的产品,IMHO不只是支持CentOS,RH也不是一个标准操作程序,只会说‘看,我们确实热爱开源,所以考虑我们作为VMware的竞争对手’而不只是想要支持其它人的系统吧”。他说,“我没有看到微软在Linux上放了太多精力。和我谈过的人没有谁对它的前景感到兴奋。RHEL KVM似乎会在我生活的圈子中产生更大的影响。”

但是,微软开源社区的高级主管Gianugo Rabellino尽最大努力招揽OSCON参与者,他强调很多客户同时运行Linux和Windows,且在“混合IT”这个时代里的互动性也因此有必要了。

沿着相同的路线,微软将其SUSE Linux的互操作协议(现在由Attachmate代替了Novell)延至2016年。在这期间,微软同意在新的Linux企业级证书上投资1亿美元来让客户得到来自SUSE的Linux支持。

考虑到微软的大动作地推进,红帽的Linux-Hyper-V新闻并不让人惊讶。年初时,微软称将支持CentOS作为Hyper-V中的来宾操作系统。

Rabellino还谈到其它例子阐述微软的公民资格,包括它支持Drupal和Joomla开源内容管理系统的工作。微软还发布了用于PHP的Windows Azure SDK 4.0版本和在云中实现PHP应用开发的新工具。

但是,Rabellino想通过兜售Apache Software基金会成员来吸引观众的企图加上他在微软相对来说还很短的任期,他并没有影响到更多愤世嫉俗的与会者。