最近帮人在乌班图16.04.4版本的服务器上(代号:好客的干毛地松鼠)搭建了邮件系统。搜索一下,没有在乌班图16.04.4版本上使用postfix3+dovecot2+mysql5.7搭建的中文教程。这样我不妨将这过程写下来,尤其本人在搭建过程遇到俩个由于版本升级导致的配置“坑”,需要查阅外文资料才能解决。有了此篇,大家以后遇到类似问题就不用查阅英文文档了。本文档分上下两部分,本文为上半部分,介绍软件基本安装以及postfix和dovecot配置,下半部分预料在月底写好,主要是反病毒软件和网页访问的配置。


本文介绍的是ubuntu 16.04.4长期支持版做的基础服务器,搭载postfix3.1.0处理邮件服务,用mysql5.7邮件存储数据库,加上dovecot2.2.22分发邮件,阿帕奇和松鼠邮箱支持的网页服务,构成基本邮件系统的组建和配置步骤。

1.安装前准备工作:

在防火墙或路由器、域名服务器上将以下端口做好相关映射,将有关服务转发到邮件服务器上。此篇文档着重讲述邮件服务器上的配置,就不累述了此步骤的工作。

  • 25 (SMTP)
  • 80 (HTTP)
  • 110 (POP3)
  • 143 (IMAP)
  • 443 (HTTPS)
  • 465 (SMTPS)
  • 993 (IMAPS)
  • 995 (POP3S)

2. 安装ubuntu16.04.4服务器:

Ubuntu Xerus Server

 

安装乌班图时,个人建议配置网络时,选择手动:
configure_network
 
这样可以手动指定邮件服务器的IP地址方便日后配置。
 

本事例中,主机名采用了mailbox,dns选择了拥有的公有IP域名(为论述方便,下文使用mytest.com,大家具体设置的时候,根据自己需要来替换),这样主机的完全及格域名就是mailbox@mytest.com了。然后需要在域名服务器上添加A记录指向公网ip,还有MX记录指向mailbox的完全及格域名。

defineIP

另外本文没有在系统初始化aptitude安装界面中,选择直接安装邮件服务器。因为ubuntu会自动选择安装PostgreSQL来存储邮件,选择安装基本服务standard system utilities ,有更多选择权,比如说用mysql构建邮件储存,还有安装openssh server方便管理员使用ssh远程连接管理。

安装完毕后进入字符界面,使用ssh连接。更新所有软件后正式开始搭建邮件服务器。

 

3.搭建邮件服务器

3.1安装必须软件

先安装阿帕奇网页服务器,安装postfix时候,会让你选择网页服务器的,所以应装网页服务器在前:

$ sudo apt-get install apache2

然后正式安装邮件服务器必备软件:

输入以下命令:

$ sudo apt-get install postfix-mysql mysql-server dovecot-pop3d dovecot-imapd dovecot-mysql amavisd-new libclass-dbi-mysql-perl

简单介绍各组建,postfix是邮件服务器主要部件,可以理解成邮局,mysql是管理邮件的数据库,dovecot鸽舍的作用看做是邮递员,负责将邮件分发到各信箱,pop/imap是电子邮箱协议版本, amavis是邮件反病毒审查器,负责扫描非法邮件。

值得注意的是需要安装 dovecot-mysql软件模块,本人学习linux ubuntu的时候使用的是10.04版本,当时架设邮件服务器的时候是不需要安装此模块的,安装dovecot的时候已经配置好自动支持mysql,但这次在16.04乌班图版本上实际操作的时候,发现自从ubuntu12.04起,就必须安装此模块,否则测试的时候,mail.log日志会提示以下类似的鉴权错误(这是本次配置过程中遇到的第一个坑):

status=deferred (temporary failure)
dovecot: auth: Fatal: Unknown database driver ‘mysql’
mailbox dovecot: master: Error: service(auth): command startup failed, throttling
 

在安装postfix时候,要求输入完全合格域名,以及在postfix 通用邮件配置中,应该选择“Internet site” 因特网场景:

 

接着安输入命令安装反垃圾邮件和病毒过滤程序:

$ sudo apt-get install spamassassin clamav-daemon razor pyzor cpio arj zoo nomarch lzop cabextract pax lhasa unrar zip unzip rar

安装邮件系统网页访问程序松鼠邮:

$ sudo apt-get install squirrelmail squirrelmail-locales php7.0-imap

安装访问管理数据库的phpadmin以及邮件测试小工具:

$ sudo apt-get install phpmyadmin telnet mutt bsd-mailx

自止,所有必要软件安装完毕,下面进入配置。

3.2 配置:

继续阅读

 

        在帮客户在“新”机子上装内部论坛服务器,需要用到mysql。据客户说,提供的机器是一台新机子,以前没人“碰”过。可是安装mysql时,直接就装上了,没有提示需要设置mysql 的 root密码。当时觉得奇怪。安装完毕后输入

mysql -u root

打算用root账户设一下密码,谁知道系统出现提示:

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)

向客户再确认一下,以前有没有当过服务器,装过mysql-server,得到否定答案,告诉我这是“新”机子。太奇怪了,于是打算卸载后重新安装一次。

sudo apt-get purge php5-mysql mysql-server

sudo apt-get install php5-mysql mysql-server

重新安装时,依然没有出现提示设置root密码。然后以root用户进入时,仍然遇到拒绝访问。

继续阅读

在虚拟机上的CentOS6.8上安装LEMP

 

I uninstalled the apache2 in my CentOS6.8 VMachine, then followed this guide to install LEMP.

But when I start the Nginx, it warning me this:

nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)

It indicated my machine didn’t support IPV6.

So just configurated the Nginx setting in /etc/nginx/conf.d/default.conf

just annotate this line with ‘#’ :

 # listen [::]:80 default_server;

Then LEMP was installed successful.

先卸载以前安装的阿帕奇2服务器,然后根据这里的指引安装LEMP(还是写作LEMP好,因为设计者毛子都这样称呼,主要这个软件名称意思是“engine x”。(现在的官方额外包已经包含Nginx安装包,所以用yum就方便多了)

可是启动Nginx的时候,系统提示不支持IPV6协议,这问题好解决,在Nginx配置文件里注释掉监听来自ipv6协议的信号进程命令就行。

这样Nginx就启动起来拉。

阿帕奇2不能判断服务器可靠的完全合格域名,

最简单解决办法

 

After configurated the apache2 setting in my old ubuntu server(8.04), I restarted the apache2 by input this command:

当我在8.04版本的ubuntu老服务器上更改阿帕奇2的一些配置后,键入这命令重启服务:

$sudo /etc/init.d/apache2 restart

But was informed that apache2 didn’t ‘realize’ the server’s domain name:

不期,系统提示阿帕奇2 不认服务器的完全合格域名:

apache2: Could not reliably determine the server’s fully qualified domain name

I searched this problem in Bing. And there was someone talking about on this. But I don’t think that is a good way to solve  the problem.

用必应搜索解决办法,我在这里看到相关讨论,但认为里面的不够好。

The better way should be here. Thanks firstboy0513.

比较好的解决办法来自firstboy0513的这篇日志。感谢这位网友。

 

Now I provide my method, just one command:

现在说一下我最终的解决办法,只需一条命令:

$ echo “ServerName localhost” | sudo tee /etc/apache2/conf.d/fqdn

Then problem was solved:

问题就解决了。

$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2 [ OK ]

 

Extract tar.xz file

Dowload file with the tail was ***.tar.xz. 下载了一个tar.xz 结尾的压缩文件。

It just need  to xz file to tar format, that treat it as tar file. 其实只需要xz 成tar文件,再像tar一样处理便行。

command like: 命令类似:

$xz -d ***.tar.xz

$tar xvf ***.tar

 

ubuntu boot into initramfs mode

     我安装在虚拟机上的ubuntu开机进入了initramfs模式,有可能上一次退出系统的时候没有在完全关机下关闭了VMware, 所以系统认为没有正常启动,于是进入了initramfs模式。

    Once a time, when I turn on my ubuntu which installed in VMware, it ran into the initramfs mode. It’s probable caused that I closed the VMware without been waiting the machine shutdown completely, so it ran into initramfs mode.

    这时只需运行系统文件检查命令fsck,检查文件是否一致就可以了:

    It just need to run fsck to recover:

    fsck -y /dev/sdn

    然后exit退出便可。

    Then exit. Everything would return perfect.