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. Callback-回调-回呼

    很早以前看<Delphi 4从入门到精通>有这么一个概念——CallBack.然后在<Delphi 6从入门到精通>看同样的章节,翻译为“回调”,就有一个疑问了,什么是Call ...

  2. Mysql分组求和&LIMIT

    分组求和mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY na ...

  3. CodeForces 356A_(set应用,线段树)

    A. Knight Tournament time limit per test 3 seconds memory limit per test 256 megabytes input standar ...

  4. sql 查询替换字符

    Select  A,B,C  from  Tb1 –查询所有 Select  A,replace(B,’1’,’壹’),C  from   Tb1  替换查询 Tb1 A B C AA1 1 CC A ...

  5. Node.js标准的回调函数

    Node.js标准的回调函数:第一个参数代表错误信息,第二个参数代表结果. function (err, data) 当正常读取时,err参数为null,data参数为读取到的String.当读取发生 ...

  6. java实现根据高德地图API接口进行地址位置解析,将地址转化为经纬度

    原创文章,转载请注明,欢迎评论和更改. 1,所需额外ar包,import net.sf.json.JSONObject; 2,完整源代码代码 package com.travel.util; impo ...

  7. 1. 构建第一个SpringBoot工程

    1.File -  New - Module 2.选项的是Spring Initializr(官方的构建插件,需要联网) ,一定要选择jdk 3.填写项目基本信息 Group:组织ID,一般分为多个段 ...

  8. Selenium Webdriver——操作隐藏的元素display属性

    有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了.例如,下面的情况: 页面主要通过“display:none”来控制整个下拉框不可见.这个时候如果直接操作这个下拉框, ...

  9. 洛谷 P1494 BZOJ 2038 [2009国家集训队]小Z的袜子(hose)

    //洛谷题面字体.排版我向来喜欢,却还没收录这道如此有名的题,BZOJ的题面字体太那啥啦,清橙的题面有了缩进,小标题却和正文字体一致,找个好看的题面咋这么难呐………… //2019年3月23日23:0 ...

  10. 简述synchronized和java.util.concurrent.locks.Lock的异同

    1.synchronized 用在方法和代码块的区别? a. 可以只对需要同步的使用 b.与wait(),notify()和notifyall()方法使用比较方便 2.wait() a.释放持有的对象 ...