本文记录在本地虚拟机CentOS6上搭建Sendmail + Dovecot + Squirrelmail 的Webmail环境的过程,仅仅是本地局域网的环境测试,不配置DNS, 也没有安全认证,Squirrelmail 版本squirrelmail-webmail-1.4.22。

前言

  关于CentOS系统的安装,这里便不做介绍了,大家可以在网上找到很多相关的资料参考。如果已经对下面的命令熟悉的朋友,请直接跳到下一步...

现简单介绍一下一些基本命令的使用:

1、查看系统发行版本

[lz@localhost ~]$ cat /etc/issue
CentOS release 6.9 (Final)
Kernel \r on an \m

2、查看内核版本

[lz@localhost ~]$ uname -a
Linux localhost.localdomain 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64 x86_64 x86_64 GNU/Linux

3、获取系统权限

[lz@localhost ~]$ su root      
Password:             【输入lz的密码】
[root@localhost lz]#

4、让用户能获取root权限

[root@localhost lz]# vim /etc/sudoers

按esc键,输入:wq! 保存文件,退出,这样lz就用使用sudo命令获取root权限了。来,试试看。

[root@localhost lz]# exit
exit
[lz@localhost ~]$ sudo -i     【获取root权限】
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for lz:
[root@localhost ~]#

5、修改主机名和hosts文件

[root@mail ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=mail.squirrelmail.com
[root@mail ~]# cat /etc/hosts
127.0.0.1 mail.squirrelmail.com localhost.localdomain
127.0.0.1 squirrelmail.com localhost.localdomain
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

重启一下系统,命令提示符前面的就会变成如上所示。

6、更新系统

[root@mail ~]# yum update

这个过程可能需要比较长的时间,耐心等待系统更新完成。

一、Sendmail安装和配置

  下面记录Sendmail的安装过程,重要的步骤会给出命令行输出结果。首先,我们需要安装一些依赖包,CentOS系统使用yum来安装,跟Debian/Ubuntu的apt-get 类似可以很方便的安装一些软件。

[root@mail mail]# yum install m4 telnet mailx
Loaded plugins: fastestmirror, refresh-packagekit
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras: centos.ustc.edu.cn
* updates: centos.ustc.edu.cn
Package m4-1.4.13-5.el6.x86_64 already installed and latest version
Package 1:telnet-0.17-48.el6.x86_64 already installed and latest version
Package mailx-12.4-8.el6_6.x86_64 already installed and latest version
Nothing to do

1、Sendmail安装

[root@mail mail]# yum install sendmail sendmail-cf
Loaded plugins: fastestmirror, refresh-packagekit
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras: centos.ustc.edu.cn
* updates: centos.ustc.edu.cn
Package sendmail-8.14.4-9.el6_8.1.x86_64 already installed and latest version
Package sendmail-cf-8.14.4-9.el6_8.1.noarch already installed and latest version
Nothing to do

我这已经安装好了,仅演示安装过程,在软件的安装过程中,会提示输入[y/N] : y , 当然输入y了

2、Sendmail配置

Sendmail的配置文件默认是在/etc/mail目录下的:

[root@mail mail]# ls /etc/mail
access aliasesdb-stamp domaintable.db local-host-names mailertable.db Makefile sendmail.cf.bak submit.cf trusted-users virtusertable.db
access.db domaintable helpfile mailertable make sendmail.cf sendmail.mc submit.mc virtusertable

默认监听的是本地接口地址: 127.0.0.1:25, 我们可以通过命令查看

[root@mail mail]# ps -ef | grep -v grep | grep -i sendmail
root 29409 1 0 14:52 ? 00:00:00 sendmail: accepting connections
smmsp 29419 1 0 14:52 ? 00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
[root@mail mail]# netstat -an | grep :25 | grep tcp
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN

如果要让Sendmail监听本机的所有接口地址,可以修改sendmail.mc文件, 如果默认监听的是0.0.0.0:25,则可以跳过下面这步。

[root@mail mail]# vim /etc/mail/sendmail.mc
大概在116行, 将如下内容注释掉, 在行首添加dnl
From:
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl To:
dnl # DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

重启一下Sendmail,再查看:

[root@mail ~]# service sendmail restart
Shutting down sm-client: [ OK ]
Shutting down sendmail: [ OK ]
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
[root@mail ~]# netstat -an | grep :25 | grep tcp
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN

下面将使用m4这个工具来创建sendmail.cf这个文件

[root@mail ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

在local-host-names增加域名项,表示的是可以用来发送/接收邮件的域名。

[root@mail ~]# cat /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
squirrelmail.com
mail.squirrelmail.com

重启Sendmail,设置开机启动。

[root@mail ~]# service sendmail restart
Shutting down sm-client: [ OK ]
Shutting down sendmail: [ OK ]
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
[root@mail ~]# chkconfig sendmail on      【开机启动】

3、Sendmail发送邮件测试: mail命令测试

首先创建两个测试的账户: 使用useradd命令添加两个用户user1和user2、然后用passwd命令更改密码、再将用户添加到mail组。

[root@mail ~]# useradd user1      【添加用户】
[root@mail ~]# useradd user2
[root@mail ~]# passwd user1       【修改密码】
Changing password for user user1.
New password:
BAD PASSWORD: it does not contain enough DIFFERENT characters
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@mail ~]# passwd user2       【修改密码】
Changing password for user user2.
New password:
BAD PASSWORD: it does not contain enough DIFFERENT characters
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@mail ~]# gpasswd -a user1 mail    【添加用户到mail组】
Adding user user1 to group mail
[root@mail ~]# gpasswd -a user2 mail
Adding user user2 to group mail

用其中一个账户登陆,给另一个用户发送邮件

[root@mail ~]# su user1      【切换用户user1】      
[user1@mail root]$ mail -s "hello user2" user2      [发送邮件:mail -s "主题内容" "收信人"]
This is a test mail from user1.               【邮件正文】               
.
EOT
[user1@mail root]$ exit
exit
[root@mail ~]# cat /var/mail/user2             【查看邮件】
From user1@mail.squirrelmail.com Wed Aug 9 17:18:16 2017
Return-Path: <user1@mail.squirrelmail.com>
Received: from mail.squirrelmail.com (mail.squirrelmail.com [127.0.0.1])
by mail.squirrelmail.com (8.14.4/8.14.4) with ESMTP id v799IFCn003225
for <user2@mail.squirrelmail.com>; Wed, 9 Aug 2017 17:18:16 +0800
Received: (from user1@localhost)
by mail.squirrelmail.com (8.14.4/8.14.4/Submit) id v799IFjw003224
for user2; Wed, 9 Aug 2017 17:18:15 +0800
From: user1@mail.squirrelmail.com
Message-Id: <201708090918.v799IFjw003224@mail.squirrelmail.com>
Date: Wed, 09 Aug 2017 17:18:15 +0800
To: user2@mail.squirrelmail.com
Subject: hello user2
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit This is a test mail from user1.

可以看到,上面的邮件发送成功。

[说明] 使用mail命令发送邮件, "-s"后面接邮件主题,然后是接收邮件的账户,直接使用用户名即可,在本域测试。然后输入邮件正文,最后用'.' ,表示邮件正文结束。

4、Sendmail发送邮件测试: telnet方式测试

5、防火墙设置

需要设置防火墙允许本机25号端口的数据通过:

[root@starnight mail]# iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT

保存防火墙设置,并重启:

[root@starnight mail]# service iptables save      【保存设置】
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@starnight mail]# service iptables restart    【重启防火墙】
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
[root@starnight mail]# service iptables stop      【关闭,我比较暴力】
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@starnight mail]#  

到这里,Sendmail的配置就完成了。成功!

二、Dovecot 安装配置

需要先安装一些依赖包:

[root@mail ~]# yum install telnet mailx mutt

1、Dovecot安装

[root@mail ~]# yum install dovecot

2、Dovecot配置

默认情况下,Dovecot的配置文件在/etc/dovecot/下

[root@mail ~]# ls /etc/dovecot/
conf.d dovecot.conf

修改配置文件/etc/dovecot/dovecot.conf:

[root@mail ~]# vim /etc/dovecot/dovecot.conf

去掉protocols的注释, 即去掉'#'

打开配置文件/etc/dovecot/conf.d/10-mail.conf:

[root@mail ~]# vim /etc/dovecot/conf.d/10-mail.conf

设置:mail_location = mbox:~/mail:INBOX=/var/mail/%u

启动和查看Dovecot 服务:

[root@mail ~]# service dovecot start
Starting Dovecot Imap: [ OK ]
[root@mail ~]# ps -ef | grep -v grep | grep -i dovecot
root 3556 1 0 17:42 ? 00:00:00 /usr/sbin/dovecot
dovecot 3558 3556 0 17:42 ? 00:00:00 dovecot/anvil
root 3559 3556 0 17:42 ? 00:00:00 dovecot/log
root 3561 3556 0 17:42 ? 00:00:00 dovecot/config
[root@mail ~]# netstat -planet | grep -i dove
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 0 21510 3556/dovecot
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 0 21502 3556/dovecot
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 0 21500 3556/dovecot
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 0 21508 3556/dovecot
tcp 0 0 :::993 :::* LISTEN 0 21511 3556/dovecot
tcp 0 0 :::995 :::* LISTEN 0 21503 3556/dovecot
tcp 0 0 :::110 :::* LISTEN 0 21501 3556/dovecot
tcp 0 0 :::143 :::* LISTEN 0 21509 3556/dovecot

3、Dovecot接收邮件测试: mutt

之前在测试Sendmail的时候,用user1这个账户向user2发送了一封邮件,通过查看本地文件进行验证。

[root@mail ~]# mutt -f imap://user2:123456@localhost              【用户user2  密码:123456】

第一次使用在底部会有提示,按照提示进行即可:

  yes

 a

accept 之后,会出现如下邮件列表,

按回车键即可查看邮件:

【注】如果新建的用户user1或user2没有加入到mail用户组,通过这种方式查看邮件就会出错。

4、Dovecot接收邮件测试: telnet方式测试

到这里,Dovecot的配置就完成了。成功!

三、Squirrelmail安装

1、配置Web环境

CentOS Apache2默认应该是安装了的,名称为httpd,如果没有安装可以采用如下命令进行安装

安装:

[root@mail html]# yum install httpd

启动、停止、重启等命令:

[root@mail html]# service httpd start
Starting httpd: [ OK ]
[root@mail html]# service httpd stop
Stopping httpd: [ OK ]
[root@mail html]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

此刻访问虚拟机ip地址,应该就能正常访问了

2、安装PHP

安装方法也很简单:

[root@mail html]# yum install php

测试: 在web根目录:/var/www/html, 编写如下文件info.php

[root@mail html]# pwd
/var/www/html
[root@mail html]# cat info.php
<?php
phpinfo();
?>

浏览器访问:http://192.168.1.103/info.php

3、下载和配置Squirrelmail

下载:

切换到web根目录:使用如下命令下载

[root@mail html]# wget https://nchc.dl.sourceforge.net/project/squirrelmail/stable/1.4.22/squirrelmail-webmail-1.4.22.tar.gz

解压:

[root@mail html]# tar -zxvf squirrelmail-webmail-1.4.22.tar.gz 
[root@mail html]# ls
info.php squirrelmail-webmail-1.4.22 squirrelmail-webmail-1.4.22.tar.gz
[root@mail html]# mv squirrelmail-webmail-1.4.22 squirrelmail            【重命名为squirrelmail】
[root@mail html]# ls
info.php squirrelmail squirrelmail-webmail-1.4.22.tar.gz
[root@mail html]# cd squirrelmail
[root@mail squirrelmail]# ls
class config configure contrib data doc functions help images include index.php locale plugins po README src themes
[root@mail squirrelmail]# cd config
[root@mail config]# ls
config_default.php config_local.php conf.pl index.php

配置:

运行配置文件:

[root@mail config]# pwd
/var/www/html/squirrelmail/config
[root@mail config]# ls
config_default.php config_local.php conf.pl index.php
[root@mail config]# ./conf.pl         【运行配置文件】

配置项如下:

修改一下域名:可以根据自己的需求进行相应的修改。

[2].  Server Settings  => [1].  Domain  => 输入:mail.squirrelmail.com  => 输入:S  [保存数据] =>  输入:R [返回上一级]  => Q [退出]

4、测试和修改

浏览器访问:http://192.168.1.103/squirrelmail/src/configtest.php

看到上面出现两个错误,我们可以尝试解决一下:

1、 PHP short_open_tag = off  需要设置为On

[root@mail html]# vim /etc/php.ini 

2、再填加两个文件夹data和attach,并赋予写权限

[root@mail ~]# cd /var/local/
[root@mail local]# ls
[root@mail local]# mkdir squirrelmail
[root@mail local]# cd squirrelmail/
[root@mail squirrelmail]# mkdir data
[root@mail squirrelmail]# mkdir attach
[root@mail squirrelmail]# chmod a+w data/
[root@mail squirrelmail]# chmod a+w attach/
[root@mail squirrelmail]# ls -l
total 8
drwxrwxrwx 2 root root 4096 Aug 9 21:39 attach
drwxrwxrwx 2 root root 4096 Aug 9 21:39 data 

重启一下Web服务器: httpd

[root@mail squirrelmail]# service httpd restart

再次访问正常:

5、登陆Squirrelmail 和邮件发送、接收测试

现在可以访问: http://192.168.1.103/squirrelmail/src/login.php

用之前新建的账户名: user1/user2 : 123456 登陆, 用user2登陆看看,可以发现已经有一封之前发送的邮件了

下面我们在Webmail中发送邮件试试:user2 发送给 user1

再用user1登陆看看, 可以看到我们刚才发送的测试邮件...

至此,我们在CentOS6 上安装 Sendmail + Dovecot + Squirrelmail 圆满成功。

【注】不得不提的是,这只是个局域网的Webmail的测试环境,如果要实际使用的话,还必须搭建一个DNS服务器,还有跟邮件服务器配套的相关垃圾邮件过滤,认证之类的。

这本是我研究邮件服务器安全所搭建的测试环境,目前仅限于此。

Problems

  这里会列举一些在使用的过程中可能会出现的问题,仅供参考。

问题:SquirrelMail and dovecot imap 13 : Permission denied

解决:setsebool httpd_can_network_connect=1

参考:https://www.fedoraforum.org/forum/archive/index.php/t-59291.html

References:

CentOS 安装Sendmail

CentOS 安装Dovecot

Postfix + Dovecot + Squirrelmail--CentOS 6.4

最后,只想说一句,没有截图的都是耍流氓....

CentOS6 安装Sendmail + Dovecot + Squirrelmail的更多相关文章

  1. CentOS6 安装Sendmail + Dovecot + Roundcubemail

    前言 本文是继CentOS6 安装Sendmail + Dovecot + Squirrelmail 关于邮箱服务器配置的第二篇文章,因为关于使用Sendmail进行相关配置的文章.资料等太老,而且资 ...

  2. CentOS 系统中安装postfix+dovecot+openwebmail <转>

    一.先卸载sendmain[root@ser ~]#  yum remove sendmail 二.安装postfix ,dovecot,cyrus-sasl[root@ser ~]#  yum -y ...

  3. Red Hat Enterprise Server 6.0 安装Sendmail相关包

    由于需要在Linux服务器(Red Hat Enterprise Linux Server release 6.0)上配置邮件服务,需要安装Sendmail包,一般Sendmail的安装有两种方式:R ...

  4. 解决 -ERR Plaintext authentication disallowed on non-secure (SSL/TLS) connections 方案[sendmail, dovecot]

    在linux下安装sendmail比较容易, 但是在配置sendmail时却是比较麻烦的, 特别是对于一些新手来说, 配置过程必须十分小心谨慎, 要知道, 错误是千奇百怪, 但是成功的结果就只有一个, ...

  5. Centos6 安装vnc

    Centos6 安装vnc 1. 安装 使用yum方式安装 yum install tigervnc-server tigervnc #启动 vncserver #重启动 /etc/init.d/vn ...

  6. centos6 安装vsftpd

    centos6 安装vsftpd vsftpd一般选择yum安装,以下是安装和配置过程 如果是centos6想要安装的话一般是编译安装 1.安装 yum安装 yum install vsftpd 编译 ...

  7. oracle 11g centos6 安装

    选型:32位的内存是个瓶颈,已经是64位的时代了.使用64位的CentOS6 和 64位的Oracle 11g R2在虚拟机器安装,采用hostonly方式设置网络注意:能上网的网卡要设置一下ICS( ...

  8. centos6 安装配置ss笔记

    2018-05-17 centos6 安装配置ss笔记 操作环境:Centos 6 x86_64 bbr 服务器地址:美国 1.准备VPS 在https://www.bwh1.net可购买,购买时已默 ...

  9. Centos6安装Percona-tools工具

    Centos6安装Percona-tools工具 环境:centos6.x yum -y install perl-DBI yum -y install perl-DBD-MySQL yum -y i ...

随机推荐

  1. JAVA基础——变量和常量

    JAVA的变量和常量知识总结 一.认识java标识符 标识符就是用于给 Java 程序中变量.类.方法等命名的符号. 使用标识符时,需要遵守几条规则: 1.  标识符可以由字母.数字.下划线(_).美 ...

  2. Resetting Frame Animation

      最近在做个小项目的时候,需要用到帧动画.对应着某种状态,该动画可以停止和再次播放.我们知道,通过函数 someAnimObj.start() someAnimObj.stop() 可以很容易地实现 ...

  3. 基于angular4.0分页组件

    分页组件一般只某个页面的一小部分,所以我们它是子组件 当然如果你承认这话的,可以往下看,因为我把他当作子组建来写了 分页组件的模版 import { Component } from '@angula ...

  4. *bzoj1083题解

    题目: 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道 ...

  5. 00002、div的文字垂直居中与背景的渐变

    1.div可以放多行的文字,当显示文字较少时,文字可垂直居中 text-align: center; display: table-cell; vertical-align: middle; text ...

  6. 集群之mysql主从配置(windows和linux版)

    起因 由于网站进一步开发运行的需求,要求主机7*24小时运行正常,同时要求能够防止数据库灾难.考虑到后期的开发程度和业务量,准备向高可用系统进行改变,同时通过负载均衡提高网络性能.于是第一步就考虑到了 ...

  7. POJ 3126 math(BFS)

    Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21581   Accepted: 11986 Desc ...

  8. Iterator、for..of,for...in和自定义遍历器**

    Iterator.for..of,for...in和自定义遍历器 Iterator: var arr = [1,2,3,4,5]; var ite = arr[Symbol.iterator](); ...

  9. Oozie安装时放置Mysql驱动包的总结(网上最全)

    不多说,直接上干货! 对于在oozie里放置Mysql驱动包的总结 根据网上的参考以及我个人经验安装的使用 (1)放一份到$OOZIE_HOME/libext下 (是 mysql-connector- ...

  10. 使用xcrun打包iOS应用

    使用xcrun打包iOS应用 通常打包采用xcodebuild和xcrun两个命令,xcodebuild负责编译,xcrun负责将app打成ipa.   XCode 默认编译出来的是appName.a ...