Centos 6 搭建邮箱服务器主要是是包括了Postfix, Dovecot和 MySQL了,下文我们详细的为各位介绍Centos 6 搭建邮箱服务器教程(Postfix, Dovecot和 MySQL)步骤,具体如下。

Postfix(邮箱服务器)是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。

前提配置要域名解析,如下配置:

本教程旨在配置postfix,并用Dovecot提供IMAP/POP3服务,用mysql存储数据。
登录服务器主机(ssh root@域名|ip地址)
安装需要的包

1.首先更新安装源

yum update

2. Centos6自带的Postfix不支持mysql,所以要从CentOS Plus库安装,这里需要修改/etc/yum.repos.d/CentOS-Base.repo添加例外。如下在此文件的[base]和[updates]下面添加例外。
文件:vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
exclude=postfix
#released updates
[updates]
name=CentOS-$releasever - Updates
exclude=postfix

3.安装需要的包
yum --enablerepo=centosplus install postfix
yum install dovecot mysql-server dovecot-mysql
首先在centosplus库安装postfix邮件服务器,然后安装dovecot、mysql服务器。
配置mysql
1.配置mysql自动启动,然后启动mysql
chkconfig mysqld on

chmod 755 /etc/rc.d/init.d/mysqld  修改mysqld执行权限

service mysqld start
2.运行mysql_secure_installation设置mysql的root密码、删除匿名账户、取消root远程登录、删除test库和对test库的访问权限、刷新授权表使修改生效(根据提示输入y/n即可)。
mysql_secure_installation
3.登录mysql
mysql -u root -p
4.新建mail数据库
CREATE DATABASE mail;
USE mail;
5.新建mail的管理员用户mail_admin并授予其在mail数据库的权限,密码这里为mail_admin_password,自己记得修改这个密码为自己的密码。
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY 'mail_admin_password';
FLUSH PRIVILEGES;
6.下面分别新建 虚拟域名表、邮件转发表、用户表、传输表,最后输入quit退出sql。
CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) );
CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );
CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );
CREATE TABLE transport ( domain varchar(128) NOT NULL default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain (domain) );
quit
 
7.编辑/etc/my.cnf绑定mysql到localhost(127.0.0.1)。
文件:vi /etc/my.cnf
bind-address=127.0.0.1
此地址用于postfix与mysql数据库服务器通信的。
8.重启mysql
service mysqld restart
 
配置postfix
下面的配置针对mysql的用户mail_admin的密码为mail_admin_password,如果上面已经更改,下面的配置记得替换。
1.新建/etc/postfix/mysql-virtual_domains.cf作为postfix的虚拟域名配置文件。
文件:vi /etc/postfix/mysql-virtual_domains.cf
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE domain='%s'
hosts = 127.0.0.1
2.新建/etc/postfix/mysql-virtual_forwardings.cf作为postfix的虚拟转发文件
文件:vi /etc/postfix/mysql-virtual_forwardings.cf
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT destination FROM forwardings WHERE source='%s'
hosts = 127.0.0.1
3.新建/etc/postfix/mysql-virtual_mailboxes.cf作为postfix的虚拟邮箱配置文件
文件:vi /etc/postfix/mysql-virtual_mailboxes.cf
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT CONCAT(SUBSTRING_INDEX(email,<'@'>,-1),'/',SUBSTRING_INDEX(email,<'@'>,1),'/') FROM users WHERE email='%s'
hosts = 127.0.0.1
4.新建/etc/postfix/mysql-virtual_email2email.cf作为postfix的虚拟右键映射文件
文件:vi /etc/postfix/mysql-virtual_email2email.cf
user = mail_admin
password = mail_admin_password
dbname = mail
query = SELECT email FROM users WHERE email='%s'
hosts = 127.0.0.1
5.为这些文件设置正确的权限和拥有者。
chmod o= /etc/postfix/mysql-virtual_*.cf
chgrp postfix /etc/postfix/mysql-virtual_*.cf
6.新建用于邮件处理的用户和组,所有虚拟邮箱都存储在这个用户的home目录下。
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
7.输入一下命令完成postfix的全部配置。注意对于下面的server.example.com需要替换为自己的 二级域名.域名,域名是自己购买的域名,比如我的服务器主机名是gradvenblog,在万网购买的域名是gradvenblog.com,二级域名设置为mail,那么就替换为mail.gradvenblog.com。
postconf -e 'myhostname = server.example.com'
postconf -e 'mydestination = $myhostname, localhost, localhost.localdomain'
postconf -e 'mynetworks = 127.0.0.0/8'
postconf -e 'inet_interfaces = all'
postconf -e 'message_size_limit = 30720000'
postconf -e 'virtual_alias_domains ='
postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf'
postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'
postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf'
postconf -e 'virtual_mailbox_base = /home/vmail'
postconf -e 'virtual_uid_maps = static:5000'
postconf -e 'virtual_gid_maps = static:5000'
postconf -e 'smtpd_sasl_type = dovecot'
postconf -e 'smtpd_sasl_path = private/auth'
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtpd_tls_cert_file = </etc/pki/dovecot/certs/dovecot.pem'
postconf -e 'smtpd_tls_key_file = </etc/pki/dovecot/private/dovecot.pem'
postconf -e 'virtual_create_maildirsize = yes'
postconf -e 'virtual_maildir_extended = yes'
postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps'
postconf -e 'virtual_transport = dovecot'
postconf -e 'dovecot_destination_recipient_limit = 1'
8.编辑/etc/postfix/master.cf文件,在最后添加docecot服务。
文件:vi /etc/postfix/master.cf
dovecot   unix  -       n       n       -       -       pipe
    flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

9.配置postfix为自动启动,并启动postfix。
chkconfig postfix on
service postfix start
 
配置Dovecot
1.首先备份/etc/dovecot/dovecot.conf文件
mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup
2.此时文件/etc/dovecot/dovecot.conf不存在了,新建/etc/dovecot/dovecot.conf,加入下面的配置信息,这里的example.com需要替换为自己的域名。
文件:vi /etc/dovecot/dovecot.conf

listen = *

protocols = imap pop3

log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n/Maildir
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
namespace {
    type = private
    separator = .
    prefix = INBOX.
    inbox = yes
}
service auth {
    unix_listener auth-master {
        mode = 0600
        user = vmail
    }
    unix_listener /var/spool/postfix/private/auth {
        mode = 0666
        user = postfix
        group = postfix
    }
user = root
}
service auth-worker {
    user = root
}
protocol lda {
    log_path = /home/vmail/dovecot-deliver.log
    auth_socket_path = /var/run/dovecot/auth-master
    postmaster_address = postmaster@example.com
}
protocol pop3 {
    pop3_uidl_format = %08Xu%08Xv
}
passdb {
    driver = sql
    args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
    driver = static
    args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
}

disable_plaintext_auth = no


3.新建/etc/dovecot/dovecot-sql.conf.ext加入下面配置信息,这里需要替换mail_admin_password为自己对应的密码。
文件:vi /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail_admin password=mail_admin_password
default_pass_scheme = CRYPT
password_query = SELECT email as user, password FROM users WHERE email='%u';
4.修改这个文件的相应权限和用户。
chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext
chmod o= /etc/dovecot/dovecot-sql.conf.ext
5.配置dovecot为自动启动,并启动它。
chkconfig dovecot on
service dovecot start
6.查看/var/log/maillog文件,查看日志信息确认是否启动成功,如用cat查看,文件大致为:
Mar 18 15:21:59 sothoryos postfix/postfix-script[3069]: starting the Postfix mail system
Mar 18 15:22:00 sothoryos postfix/master[3070]: daemon started -- version 2.6.6, configuration /etc/postfix
Mar 18 15:32:03 sothoryos dovecot: master: Dovecot v2.0.9 starting up (core dumps disabled)
7.测试pop3服务器是否运行成功。首先安装telnet命令。
yum install telnet
telnet localhost pop3
8.如果成功会大概显示如下内容,然后输入quit退出即可。
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK Dovecot ready.
 
配置邮件别名
1.编辑/etc/aliases文件,加入下面语句,设置邮件别名,example.com记得替换成自己的域名。
文件:vi /etc/aliases
postmaster: root
root: postmaster@example.com
2.更新别名并重启postfix。
newaliases
service postfix restart

如果启动报这个错:

Starting Dovecot Imap: Error: socket() failed: Address family not supported by protocol  

因为系统默认是支持ipv6的,写法为:listen = *, ::

那么需要vi /etc/dovecot/dovecot.conf 在最上面加上 listen = * 这句,它表示只支持ipv4.

在/etc/postfix/main.cf中  设置 inet_protocols = ipv4 。

再次重启service postfix restart。
 
测试Postfix
1.连接服务器
telnet localhost 25
2.连接成功后输入下面命令
ehlo localhost
3.然后会看到下面信息表示服务器运行成功。输入quit断开连接即可。
250-hostname.example.com
250-PIPELINING
250-SIZE 30720000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN
250-AUTH=PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
 
配置域名和新建用户

这里首先要设置添加域名的mx即解析记录,如图我在万网设置的:

这里我的域名是xxxxx.com。子域名mail。在mail.xxxxx.com添加MX解析记录,优先级1(越小越高)。
下面假设我之前设置的域名已经是xxxxx.com了。做测试。
1.登录mysql
mysql -u root -p
2.切换到mail数据库,然后将域名加入虚拟域名表中,并添加一个邮箱账户。这里要修改称自己的域名和自己的账户和自己的密码。
USE mail;
INSERT INTO domains (domain) VALUES ('xxxxx.com');
INSERT INTO users (email, password) VALUES ('hello@xxxxx.com', ENCRYPT('mypassword'));
quit
3.使用mailx工具发送邮件。如现在我发送一封邮件到我的另一个邮箱xxxxx@163.com (如果mailx不存在则先安装:yum install mailx)

这里用新建的邮箱账户hello@xxxxx.com向另一个邮箱发送信息,-r指定发送方,-s指定发送主题,然后指定接收方,多个接收方就用,分开,然后回车后输入邮件内容,最后按ctrl+D提交邮件。

mailx -r hello@xxxxx.com -s "hello world"   xxxx@163.com

4.我们可以查看/var/log/maillog日志文件来观察状态信息,如图显示状态status=sent发送成功:

5.同理我用xxxxx@163.com回复你好,初次见面""这个邮件,我们查看日志信息如图所示显示状态为投递成功。

6.下面我们通过mutt工具查看邮箱,根据之前设置,邮箱地址为vmail用户home目录下。首先安装mutt工具(yum install mutt)。然后定位到hi账户的邮箱,并用mutt命令查看收到的邮件: mutt -f .

最后需要清除和关闭防火墙:

iptables -F

service iptables stop

chkconfig iptables off

Centos 6 搭建邮箱服务器教程的更多相关文章

  1. Centos搭建 Git 服务器教程

    搭建 GIT 服务器教程 下载安装 git Git 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 此实验以 CentOS 7.2 x64 的系统为环境,搭建 git 服 ...

  2. CentOs上搭建git服务器

    CentOs上搭建git服务器 首先安装setuptools wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0 ...

  3. Xlight FTP搭建FTP服务器教程

    Xlight FTP搭建FTP服务器教程 1. 服务器公共设置 设置FTP 端口, ip 等 FTP 服务器公共的设定 2. 设定 FTP 用户, FTP 目录 等信息    备注: 这个用户是非Wi ...

  4. 基于 CentOS 8 搭建 openLDAP 服务器

    转载请注明原文地址:基于 CentOS 8 搭建 openLDAP 服务器 环境 OS: CentOS 8.4.2105 PHP: 7.4.21 注意 CentOS 7 中可能默认提供了 openLD ...

  5. Centos搭建 LAMP 服务器教程

    搭建 LAMP 服务 搭建 MySQL 数据库 安装 MySQL 使用 yum 安装 MySQL: yum install mysql-server -y 安装完成后,启动 MySQL 服务: ser ...

  6. 【Centos】搭建 SVN 服务器

    1.如果仅仅只是搭建 svn 服务器: (a).先检查 svn 是否已经安装了 rpm -qa subversion #输入这个命令后,会出现 subversion 版本号   (b).如果没有安装, ...

  7. CentOS 7搭建SVN服务器

    安装步骤如下: 1.yum install subversion 2.查看安装版本 svnserve --version 3.创建SVN版本库目录 mkdir -p /var/svn/svnrepos ...

  8. 应用SVN(CentOS中搭建SVN服务器)

    简单介绍如何在虚拟机 CentOS 中,搭建 SVN 服务器. 软件版本信息 Vmware 10.0.0 build-1295980 CentOS 7.0-1406-x64 Java 1.7.0_67 ...

  9. CentOS 下搭建FTP服务器

    vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个.本文介绍了在CentOS 6 4下安装vsftpd.配置虚拟用户登录FTP的过程.正 vsftpd是Linux下比较著名 ...

随机推荐

  1. 安卓使用ImageView显示OpenCV-Mat

    Android 的Application-native调试暂时还只能进行主线程调试,在GDB里面,运行于子线程的OpenCv数据处理过程不能直接调试,OPenCV-Native函数    public ...

  2. mvc自定义控件

    //自定义一个DatePicker.cshtml文件@helper Init() { <link href="~/Content/mobiscroll.custom-2.5.0.min ...

  3. (转)Bootstrap 之 Metronic 模板的学习之路 - (1)总览

    https://segmentfault.com/a/1190000006673582#articleHeader0 写在前面 bootstrap 的模板非常多,Envato 上有着各种各样的免费及付 ...

  4. python自动发邮件库yagmail(转)

    一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from email ...

  5. 前端面试题总结 -vue

    1.active-class是哪个组件的属性? vue-router模块的router-link组件. 2.嵌套路由怎么定义? 在 VueRouter 的参数中使用 children 配置,这样就可以 ...

  6. 数据库Day3之SQL Server 触发器

    最近在做一个人事管理系统写了几个简单的触发器 1.在删除员工信息表中员工信息时结果区提示被删除员工信息 create trigger teston 员工信息表after deleteasselect ...

  7. markdown让文字居中和带颜色

    markdown让文字居中和带颜色 markdown让文字居中和带颜色1.说明2. 文字的居中3.文字的字体及颜色3.1 字体更换3.2 大小更换3.3 颜色替换4 总结 1.说明 本文主要叙述如何写 ...

  8. 【剑指Offer】60、把二叉树打印成多行

      题目描述:   从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行.   解题思路:   本题可类比第22题:从上往下打印二叉树,这两道题实际上是一回事,只不过这里我们多了一个分行打印 ...

  9. 关于vcruntime140D.dll丢失问题

    电脑磁盘占用率100%,又检测出硬盘磁道坏了,要么装win7,要么换个SSD,无奈重装环境. 遇到这个问题,之前的电脑就遇到过,网上交的下载这个文件装到C盘Windows的SysWOW64,对于实验室 ...

  10. dup、文件锁、库函数、函数调用(day07)

    一.lseek()重新定位文件的读写位置. #include <sys/types.h> #include <unistd.h> off_t lseek(int fd, off ...