CentOS 7使用Postfix、Dovecot及MariaDB搭建郵箱伺服器
1. 安裝軟體
1.1 更新yum源
yum update
1.2 排除預設Postfix源
CentOS 7主源中自帶的Postfix版本並不支援MariaDB;所以,我們將從CentOS Plus源中進行安裝。在此之前,我們在[base]
和[updates]
源中過濾掉Postfix,防止版本更新時,被不支援MariaDB的Postfix覆蓋。
檔案:/etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
exclude=postfix
#released updates
[updates]
name =CentOS-$releasever - Updates
exclude=postfix
1.3 安裝必須的軟體
yum --enablerepo=centosplus install postfix
yum install dovecot mariadb-server dovecot-mysql
以上安裝了Postfix、Dovecot及MariaDB
下面,我們配置MariaDB資料庫
2. 設定MariaDB
2.1 讓MariaDB隨系統啟動
systemctl enable mariadb.service
/bin/systemctl start mariadb.service
2.2 初始化MariaDB
執行mysql_secure_installation
命令進行初始化。在初始化過程中,建議我們修改MariaDB的root密碼、移除匿名賬號、禁止root遠端登入及移除測試資料庫,最後會重新載入許可權表。
mysql_secure_installation
2.3 開啟MariaDB控制檯
mysql -u root -p
2.4 建立郵箱服務資料庫mail
CREATE DATABASE mail;
USE mail;
2.5 建立郵箱管理員賬號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;
2.6 建立虛擬域(virtual domains)表:
CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain)
);
2.7 建立郵件轉發(mail forwarding)表
CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source)
);
2.8 建立使用者(users)表
CREATE TABLE users (
email varchar(80) NOT NULL,
password varchar(20) NOT NULL,
PRIMARY KEY (email)
);
2.9 建立郵件傳輸(transports)表
CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
);
2.10 退出MariaDB控制檯
quit
2.11 繫結MariaDB到本機(127.0.0.1)
檔案:/etc/my.cnf
[mysqld]
bind-address=127.0.0.1
2.12 重啟資料庫
/bin/systemctl restart mariadb.service
3. 配置Postfix並關聯MariaDB
注意:下面的過程中,請將
mail_admin_password
替換為您在上面的操作中所設定的密碼。
3.1 建立虛擬域配置檔案
檔案:/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
3.2 建立虛擬轉發配置檔案
檔案:/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.3 建立虛擬郵箱配置檔案
檔案:/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
3.4 建立虛擬郵箱對映檔案
檔案:/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
3.5 修改以上各配置檔案的許可權
chmod o= /etc/postfix/mysql-virtual_*.cf
chgrp postfix /etc/postfix/mysql-virtual_*.cf
3.6 建立系統使用者及組,用來處理郵件。並建立虛擬郵箱的存放路徑
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
3.7 完成剩餘的Postfix配置。
注意:用自己的主機名替換下面的
server.example.com
postconf -e 'myhostname = server.example.com'
postconf -e 'mydestination = 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'
3.8 編輯/etc/postfix/master.cf
檔案,在檔案底部新增Dovecot服務
檔案:/etc/postfix/master.cf
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
3.9 配置Postfix隨系統啟動
systemctl enable postfix.service
/bin/systemctl start postfix.service
至此我們完成了Postfix的全部配置
4. 配置Dovecot
4.1 備份/etc/dovecot/dovecot.conf
檔案
mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup
4.2 新建配置檔案
檔案:/etc/dovecot/dovecot.conf
注意:替換第37行的
example.com
為您自己的域
protocols = imap pop3
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n/Maildir
ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem
ssl_key_file = /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 = [email protected]
}
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
}
4.3 Dovecot與MariaDB關聯
我們需要建立/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.4 修改以上配置檔案的許可權
chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext
chmod o= /etc/dovecot/dovecot-sql.conf.ext
4.5 配置Dovecot隨系統啟動
systemctl enable dovecot.service
/bin/systemctl start dovecot.service
4.6 檢查Dovecot的啟動日誌是否正常
檔案:/var/log/maillog
Mar 18 17:10:26 localhost postfix/postfix-script[3274]: starting the Postfix mail system Mar 18 17:10:26 localhost postfix/master[3276]: daemon started -- version 2.10.1, configuration /etc/postfix Mar 18 17:12:28 localhost dovecot: master: Dovecot v2.2.10 starting up for imap, pop3 (core dumps disabled)
4.7 使用telnet
工具測試POP3
yum install telnet
telnet localhost pop3
4.8 終端應該會出現如下提示
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
4.9 輸入quit
退出控制檯。
quit
至此,我們完成了Dovecot配置。下一步,我們要確保別名是否正常配置。
5. 配置郵箱別名
5.1 編輯檔案/etc/aliases
,確保postmaster
和root
按照您的資訊進行配置:
檔案:/etc/aliases
postmaster: root
root: [email protected]
5.2 編輯別名,並重啟Postfix
newaliases
/bin/systemctl restart postfix.service
至此,我們完成了別名配置。下一步,我們來測試Postfix是否正常。
6. 測試Postfix
6.1 測試Postfix的SMTP-AUTH和TLS
telnet localhost 25
6.2 保持連線,並輸入如下命令
ehlo localhost
6.3 您將會看到類似資訊
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
6.4 輸入quit
退出測試。下一步,我們建立資料庫用來管理域及使用者。
7 建立測試域及使用者
注意:開始繼續前,請先作好域名的DNS及MX相關設定。
在下面的例子中,我們假設使用”example.com”這個域,並建立”[email protected]”郵箱
7.1 開啟MariaDB控制檯
mysql -u root -p
7.2 切換到mail
資料庫,建立域及使用者
注意:下面的
password
請用強密碼
USE mail;
INSERT INTO domains (domain) VALUES ('example.com');
INSERT INTO users (email, password) VALUES ('[email protected]', ENCRYPT('password'));
quit
7.3 使用mailx
小工具傳送測試郵件
yum install mailx
mailx sales@example.com
使用Ctrl+D
完成訊息。Cc:
一欄我們可以留空。執行完後,我們的郵件系統會自動建立一個新的域和郵箱使用者。
8. 檢查日誌
上面的傳送測試完成後,我們需要檢查一下日誌,看看郵件是否可以正常送達。
8.1 檢查/var/log/maillog
。我們應該會看到類似的內容:
檔案:/var/log/maillog
Mar 18 17:18:47 localhost postfix/cleanup[3427]: B624062FA: message-id=<20150318171847.B624062FA@example.com>
Mar 18 17:18:47 localhost postfix/qmgr[3410]: B624062FA: from=<root@example.com>, size=515, nrcpt=1 (queue active)
Mar 18 17:18:47 localhost postfix/pipe[3435]: B624062FA: to=<sales@example.com>, relay=dovecot, delay=0.14, delays=0.04/0.01/0/0.09, dsn=2.0.0, $
Mar 18 17:18:47 localhost postfix/qmgr[3410]: B624062FA: removed
8.2 檢查Dovecot日誌
檔案:/home/vmail/dovecot-deliver.log
deliver(<[email protected].com>): 2011-01-21 20:03:19 Info: msgid=<<20110121200319.E1[email protected].example.com>>: saved mail to INBOX
下面,我們使用郵箱客戶端進行測試。
9. 測試郵箱客戶端
9.1 測試[email protected]
的郵箱
cd /home/vmail/example.com/sales/Maildir
find
如果系統禁用了root賬戶,可能導致無法進入vmail目錄。
可以使用su root
臨時提升許可權
9.2 我們可以看到如下資訊:
.
./dovecot-uidlist
./cur
./new
./new/1285609582.P6115Q0M368794.li172-137
./dovecot.index
./dovecot.index.log
./tmp
9.3 使用linux下的郵箱客戶端mutt
進行測試
yum install mutt
mutt -f .
如果被問到是否需要建立root郵箱,可以隨意回答
9.4 檢視收件箱中的郵件
如果在收件箱中看到郵件,說明Postfix、Dovecot、和MySQL都已經配置成功了!輸入q
退出mutt
10. 更多內容
下面是一些官方的文件。
相關推薦
CentOS 7使用Postfix、Dovecot及MariaDB搭建郵箱伺服器
1. 安裝軟體 1.1 更新yum源 yum update 1.2 排除預設Postfix源 CentOS 7主源中自帶的Postfix版本並不支援MariaDB;所以,我們將從CentOS Plus源中進行安裝。在此之前,我們在[base]
Windows7下的Django環境、專案及工程搭建(包括anaconda安裝方法)(一)
我這也是邊學邊寫,大家一起吧。參考的資料有點多,但都不太完全,只能依據理解自己把它集合在一起。 首先,安裝python就不說了,我用的是anaconda,我在找了很久走了很多彎路之後才找到,這是一個python的科學環境,它很強大,集成了各種python所需要
kafka入門:簡介、使用場景、設計原理、配置及叢集搭建
問題導讀: 1.zookeeper在kafka的作用是什麼? 2.kafka中幾乎不允許對訊息進行“隨機讀寫”的原因是什麼? 3.kafka叢集consumer和producer狀態資訊是如何儲存的? 4.partitions設計的目的的根本原因是什麼? 一、入
CentOS 7 MariaDB搭建主從伺服器
開發十年,就只剩下這套架構體系了! >>>
CentOS 基本指令(三)——搭建Web 伺服器Jetty & 部署RSSBus
Jetty 相比 Tomcat 等web 伺服器具有小巧輕量級的優點。 首先新建一個目錄,將jetty壓縮包解壓在裡面。 在新建目錄中,新建一個www目錄,與jetty安裝目錄同級: 將rssbus war包和配置資訊檔案放入www資料夾中 進入jetty安裝路徑,修改start.ini
初學Git及簡單搭建git伺服器和客戶端
在開發中,會經常碰到bug問題,那麼有了bug就需要修復,每個bug都可以通過一個臨時分支來修復,修復完成後,合併分支,然後將臨時的分支刪除掉。比如我在開發中接到一個404 bug時候,我們可以建立一個404分支來修復它,但是,當前的dev分支上的工作還沒有提交。 工作進行到一半時候,我們還無法提交,比如我這
centos7+postfix+devocot+cycus-sasl搭建郵箱伺服器
一.域名配置 1.設定指定ip的A記錄 假設已經有了ip為119.*.*.*(圖中打馬賽克的地方)伺服器,首先在域名解析那配置一條A記錄如下圖所示 2.配置二級域名的A記錄 3.配置mx記錄 使用
Hmailserver搭建郵箱伺服器
由於阿里雲,谷歌雲,騰訊雲等伺服器都不開放25埠和pop3埠,想要使用郵箱服務得購買他們的企業郵箱,但是對於個人而言比較貴。 所以我們需要利用家庭寬頻申請公網IP。 首先打電話給運營商客服,申請動態公網IP,因為靜態基本是白嫖不到的。理由:家裡裝了監控,需要外網訪問。 我打完電話,過了半小時左右
liunx服務搭建之SVN伺服器搭建、授權及http訪問設定(CentOS 7)
環境: svnserve, version 1.7.14,CentOS 7 摘要說明: svn伺服器往往是在window系統下使用VisualSVN搭建伺服器;本篇文章主要講述在liunx下如何搭建svn伺服器及相關授權管理和http訪問設定; 步驟: 1.搭建SV
centOS搭建SVN伺服器實現許可權控制及linux與windows客戶端的使用、排錯
目錄 1.在centOS上搭建svn_server 1.查詢是否已安裝軟體包及安裝軟體包 rpm -qa subversion #查詢是否安裝 yum -y install subversion
Ubuntu 17.10 用 apt 搭建 lamp 環境、安裝 phpmyadmin、redis 及擴展、mysql 擴展、開啟錯誤提示、配置虛擬主機
www data 4.2 pass ech span grace 參考 配置文件 最終環境: Ubuntu17.10、Apache2.4.27、MySQL5.7.20、PHP7.1 1. 安裝 apache 官方源有,直接安裝: sudo apt-get
負載均衡集群介紹、LVS介紹及調度算法、LVS NAT模式搭建
外網 redirect 更新 nec sad 接收 -a 使用 防火墻 負載均衡集群介紹 實現負載均衡集群的軟件有:LVS、keepalived、Nginx、haproxy等。其中LVS屬於四層(網絡OSI模型);Nginx 屬於七層;haproxy既可以認為是四層,也
CentOS+Nginx+Tomcat+Mysql+PHP 環境搭建及系統部署
Linux Centos tomcat mysql nginx ==============安裝centos 7.0=======================選擇最小安裝,將相關的"調試工具"、“兼容性程序庫”、“開發工具”選中。此操作是為了減少後期安裝或編譯相關服
負載均衡集群、LVS介紹及調度算法、LVS NAT模式搭建
集群 LVS NAT 負載均衡集群介紹 主流開源軟件LVS、keepalived、haproxy、nginx等 其中LVS屬於4層(網絡OSI 7層模型),nginx屬於7層,haproxy既可以認為是4層,也可以當做7層使用 keepalived的負載均衡功能其實就是lvs lvs這種4層的負載均衡
mysql/MariaDB 搭建後創建密碼及開啟遠程
機器 bsp OS select col HA class aca sql 創建密碼: mysqladmin -u root -p password newpassword 或 MariaDB [(none)]> use mysql MariaDB [mysql
負載均衡集群介紹及LVS介紹、調度算法、 LVS NAT模式搭建
分配 hashing fault cmp apach dir 流行 tina -s 一、 負載均衡集群介紹 實現負載均衡主流開源軟件LVS、keepalived、haproxy、nginx等 1)、其中LVS屬於4層(網絡OSI 7層模型),nginx屬於7層,haprox
Centos 7上KVM虛擬化平臺搭建及管理,圖文並茂,詳細易懂~~
machine err vnc 上傳 ng- list ESS 自己 nag 何為虛擬化: 虛擬化是雲計算的基礎。簡單的說,虛擬化使得在一臺物理的服務器上可以跑多臺虛擬機,虛擬機共享物理機的 CPU、內存、IO 硬件資源,但邏輯上虛擬機之間是相互隔離的。物理機我們一般稱為宿
阿里雲CentOS搭建SVN伺服器及許可權管理
linux(centos)下SVN伺服器如何搭建?說到SVN伺服器,想必大家都知道,可以是在LINUX下如何搭建SVN伺服器呢?那麼今天給大家分享一下linux(centos)搭建SVN伺服器的思路! 雖然在windows上搭建SVN很簡單,但是效能卻不高,
jQuery基礎—1、jQuery概述及環境搭建
1.1JQuery是什麼? jQuery在javascript基礎上開發出來的,對javascript進行了封裝,功能更強大,操作更方便的一種javascript庫。 JQuery=Javascript + Query(查詢)= 通過Javascript從文件中查詢元素,並對其進行操作。
Kettle叢集介紹及(Windows、Linux)環境搭建
一、Kettle叢集概述 1) Kettle叢集簡介 叢集技術可以用來水平擴充套件轉換,使得他們能夠同時執行在多臺伺服器上。它將轉換的工作量均分到不同的伺服器上。一個集 群schema由一臺主伺服器,