Centos 6 搭建郵箱服務器教程


 

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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM