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]下面添加例外。
文件:/etc/yum.repos.d/CentOS-Base.rep
[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
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)。
文件:/etc/my.cnf
bind-address=127.0.0.1
此地址用于postfix与mysql数据库服务器通信的。
8.重启mysql
service mysql restart
 
配置postfix
下面的配置针对mysql的用户mail_admin的密码为mail_admin_password,如果上面已经更改,下面的配置记得替换。
1.新建/etc/postfix/mysql-virtual_domains.cf作为postfix的虚拟域名配置文件。
文件:/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的虚拟转发文件
文件:/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的虚拟邮箱配置文件
文件:/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的虚拟右键映射文件
文件:/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需要替换为自己的 二级域名.域名,域名是自己购买的域名,比如我的服务器主机名是jlyblog,在万网购买的域名是jlyblog.com,二级域名设置为mail,那么就替换为mail.jlyblog.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服务。
文件:/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需要替换为自己的域名。
文件:/etc/dovecot/dovecot.conf
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
}
3.新建/etc/dovecot/dovecot-sql.conf.ext加入下面配置信息,这里需要替换mail_admin_password为自己对应的密码。
文件:/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记得替换成自己的域名。
文件:/etc/aliases
postmaster: root
root: postmaster@example.com
2.更新别名并重启postfix。
newaliases
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即解析记录,如图我在万网设置的:

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

 

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

 

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

 

 

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

 

 

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

 

 

 

 

7.发送带附件的邮件,首先上传附件到服务器(如scp /home/jly/Desktop/resume.pdf root@www.jlyblog.com:/home/vmail),然后使用mailx的-a选项来指定附件,这里为了方便也将mailx的标准输入重定向到mess文件(事先编辑的)中。

 

 

 

8.接收含有附件的邮件,下面使用jianglinyan.jly@163.com邮箱向hi@jlyblog.com发送一份含有附件的邮件。如图发送一个微软100题pdf过去:

 

 

使用mutt &ndash;f命令查看接收到的邮件,如下收到一个6M的邮件:

 

 

查看邮件,按空格键翻页到附件那里,按v进行查看附件。

 

 

如上定位到pdf,按s保存,输入保存名称,确定即可。

 

下一步就是将保存的pdf文件从服务器下载到我们的电脑了。

时间: 2024-09-20 09:43:16

Centos 6 搭建邮箱服务器教程(Postfix, Dovecot和 MySQL)的相关文章

win7iis怎么搭建ftp服务器 win7iis搭建ftp服务器教程

  win7iis怎么搭建ftp服务器?win7自带的iis搭建简单的FTP服务器,系统版本需是win7旗舰版,其它版本貌似不带iis.下文小乐哥给大家分享win7iis搭建ftp服务器教程,一起来学学吧! win7iis搭建ftp服务器教程 第一步:依次进入控制面板–程序和功能–打开或关闭windows功能,如图: 接下来就选择要添加的功能,如图 点击确定,保存之后,再次依次进入 控制面板–系统和安全–管理工具... 然后打开Internet信息服务(IIS)管理器.建议发一个快捷方式到桌面上

求助apache james搭建邮箱服务器

问题描述 求助apache james搭建邮箱服务器 求助我用的是window2008 rt服务器怎么才可以搭建邮箱服务器给公司使用求指导 我的qq284139440

CentOS上搭建PHP服务器环境的步骤与方法_服务器其它

本文实例讲述了CentOS上搭建PHP服务器环境的步骤与方法.分享给大家供大家参考,具体如下: 安装apache: yum install httpd httpd-devel 启动apache: /etc/init.d/httpd start 此时输入服务器的IP地址,应该看到apache的服务页面,端口不用输,apache默认就是使用80端口 安装mysql: yum install mysql mysql-server 启动mysql: /etc/init.d/mysqld start 安装

CentOS下搭建SVN服务器的步骤详解_服务器其它

本文实例讲述了CentOS下搭建SVN服务器的步骤.分享给大家供大家参考,具体如下: 1.安装svn yum install -y subversion 2.验证安装是否成功 svnserve --version 3.创建svn版本库 mkdir svn svnadmin create svn/repo 注:这里的repo是版本库名称 4.配置svn 创建版本库后,在这个版本库的conf目录下会生成3个配置文件: [root@singledb conf]# pwd /root/svn/repo/

CentOS 7 搭建ftp服务器

  本文采用最新的CentOS 7 来学习搭建Linux各种服务器,今天分享的是搭建ftp服务器(ps:不建议使用最新的系统去学习,因为系统发生了改变,好多以前的搭建服务器的方法就不行了,比如说centos7将防火墙由iptables换为了firewall,再按照原来的教程去搭建就会遇到很多问题.....,当然如果只是想用服务器大可在安装的时候勾选相应的选项系统会自动安装好相关的服务)由于本人运气比较差,所以在安装的过程遇到了各种奇葩的问题,并且本人还是一个刚入门的小菜鸟,因此花了足足3天才算把

CentOS上搭建Git服务器步骤详解

Git是一个分布式版本控制软件,原来是linux内核开发者Linus Torvalds为了更好地管理linux内核开发而创立的.发展至今,Git已经成为了一个相当好用的版本管理工具.相比于SVN,如果想要保存一些微小的修改也必须得提交服务器保存才可以,这样使服务器的版本号过多,而Git解决了这个问题,一些小的修改只在本地提交即可,只需最后修改完成后再提交服务器.正是由于这样的便捷性,现在越来越多的社区项目都开始使用Git来取代SVN之类较为传统的版本管理工具进行开发. . 使用CentOS搭建G

centos 7安装svn服务器教程

  在windows上搭建SVN很简单,但是效能却不高,这当然是和linux相比了.然而在linux上搭建SVN却非常繁琐,这篇文章就来一步一步教您如何在Centos上搭建SVN 源码目录:/home/user/project 工程名:project 工程目录:/source/svn/project 访问地址:svn://ip/project 一. 安装svn yum install subversion 二. svn服务器配置 1. 创建svn根目录 mkdir /source/svn 2.

CentOS 7搭建SVN服务器

安装步骤如下: 1.yum install subversion 2.查看安装版本 svnserve –version 3.创建SVN版本库目录 mkdir -p /var/svn/svnrepos 4.创建版本库 svnadmin create /var/svn/svnrepos 执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件 5.进入conf目录(该svn版本库配置文件)cd conf/ authz文件是权限控制文件 passwd是帐号密码文件 svnserv

centos系统搭建SVN服务器的方法

搭建SVN服务,有效的管理代码 第一步:安装 #yum install subversion 判断是否安装成功 #subversion -v svnserve, version 1.6.11 (r934486) 出现上面的提示,说明安装成功. 如果提示如下:-bash: subversion: command not found 经过查找发现: [root@]# svnserve –version svnserve, version 1.6.11 (r934486) compiled Apr 1