環境:本服務是建立在第一篇的基礎之上的,最好搭建好第一篇
玩此服務的前提是你的系統裝好了msql和postfix服務。
Postfix+mysql主要是把郵件服務的發與mysql結合使用。當然mysql要是一直是在命令列下使用也不是很方便對吧,下面我們來看linux圖形化下mysql的使用:
下面的軟體包。
phpMyAdmin-2.11.3-all-languages.tar.gz是以php的格式結合Apache通過網頁的形式管理mysql。
既然是使用網頁管理mysql,當然很定得將這個軟體包的目錄放到apahce下面,對吧
我直接將軟體包下載到/var/www/html下面。自行解壓
首先解壓這個軟體包,這個軟體包的名字好長,我們可以改個短點的名字。
# mv phpMyAdmin-2.11.3-all-languages phpmyadmin
切換到這個目錄
然後我們檢視安裝步驟:
[root@rhce phpmyadmin]# vim INSTALL
phpMyAdmin - Installation
-------------------------
安裝檔案提示讓我們去看這2個檔案。
Please have a look to the Documentation.txt or
Documentation.html files.
我們開啟Documentation.txt檔案。
Vim Documentation.txt
找到快速安裝Quick Install
第四步:4. Now you must configure your installation. There are two methods that can be
used. Traditionally, users have hand-edited a copy of config.inc.php, but
now a wizard-style setup script is provided for those who prefer a
graphical installation. Creating a config.inc.php file is still a quick way
to get started and needed for some advanced features.英文下面還有這個檔案要寫入那些東西
這段話的意思:有2中方法:可以使用現有的檔案拷貝一個config.inc.php。或是自己建立一個config.inc.php,要是自己建立,下面有你要在檔案中寫入的內容:
我們拷貝一個:
# cp config.sample.inc.php config.inc.php
然後修改參照第四步,我們雖然是拷貝,但只是模板,內容也要和它提示我們自己建立的一樣。
我們開啟config.inc.php檔案,預設紅色部分是空的,我們去快速安裝第四部複製下面的程式碼貼上到這。
$cfg['blowfish_secret'] = 'ba17c1ec07d65003'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Apache服務有了,我們還需要安裝php軟體包:
# yum install php php-mysql –y //安裝php一個是不夠的還有php-mysql。
重啟mysql和httpd服務:
之後在瀏覽器中輸入:服務的ip/phpmyadmin 回車就ok了。
之後你會看到下面的介面,可以選擇中文。登陸你的mysql資料庫。
之後我建立一個westos庫和一個date表。庫和表名字可以隨便,沒必要非得照我寫的
這個表的結構是由四部分構成:
然後我們在服務新增一個偽使用者,就是不可以登陸系統的使用者。
# useradd -u 700 -s /sbin/nologin vmail
前面我們登陸資料庫使用的是root,它的許可權過大,一般只限root登陸本地資料庫,我們重新給mysql指定一個email使用者對westos庫下的所有表有全部的許可權。
>grant all on westos.* to email@'%' identified by 'email';
退出重新登入:使用email身份:可以看到它的有效庫也只有westos。
在表裡插入:
把這幾條寫入postfix的配置檔案main.cf。執行下面的命令就會寫入main.cf
[root@redhat ~]# postconf -d | grep virtual
[root@redhat ~]# postconf -e "virtual_mailbox_base = /home/vmail"
[root@redhat ~]# postconf -e "virtual_uid_maps = static:700"
[root@redhat ~]# postconf -e "virtual_gid_maps = static:700"
郵箱的基本配置路徑是/home/vmail
傳送郵件所使用的虛擬使用者uid=700 gid=700
下面我們要配置mysql的檔案,使postfix讀取檔案時,會自動的去讀取mysql的資料。
模板的路徑:
/usr/share/doc/postfix-2.6.6/README_FILES/ MYSQL_README
Cd /etc/postfix mysql的使用者配置檔案
vim users.cf
host = localhost
user = email
password = email
dbname = westos
select_field = username “選擇一個領域
table = date
where_field = username
為了防止我們書寫錯誤,可以使用命令進行校驗:
#postmap -q "test@test.com" mysql:/etc/postfix/users.cf
test@test.com //校驗正確會出現相應的內容
只有使用者是不夠的,我們發郵件還有域、郵箱等
[root@redhat postfix]# cp -p users.cf domain.cf
[root@redhat postfix]# cp -p users.cf mailbox.cf
vim domain.cf
host = localhost
user = email
password = email
dbname = westos
select_field = domain
table = date
where_field = domain
vim mailbox.cf
host = localhost
user = email
password = email
dbname = westos
select_field = maildir
table = date
where_field = username
校驗上面檔案書寫的是否正確
[root@redhat postfix]# postmap -q "test.com" mysql:/etc/postfix/domain.cf
test.com
[root@redhatpostfix]#postmap-q"test@test.com"mysql:/etc/postfix/mailbox.cf
test.com/test/
再將這幾天新增到postfix的主配置檔案中:
[root@redhat ~]# postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/domain.cf"
[root@redhat ~]# postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/mailbox.cf"
[root@redhat ~]# postconf -e "virtual_alias_maps = mysql:/etc/postfix/users.cf"
要是你的selinux是開啟的就要做下面的:
[root@redhat ~]# getsebool -a | grep mysql
allow_user_mysql_connect --> off
mysql_connect_any --> off
[root@redhat ~]# setsebool -P allow_user_mysql_connect on
下面所有做的就是:
切換到/var/lib/mysql
rm -rf mysql.sock //這個檔案會記錄你mysql之前的操作,我試過不刪它重啟服務,你測試時郵件依舊收不到
重啟mysql服務
Mysql有兩種連線方式:
(1)TCP/IP
(2)socket
對mysql.sock來說,其作用是程式與mysqlserver處於同一臺機器,發起本地連線時可用。
例如你無須定義連線host的具體IP得,只要為空或localhost就可以。
在此種情況下,即使你改變mysql的外部port也是一樣可能正常連線。
因為你在my.ini中或my.cnf中改變埠後,mysql.sock是隨每一次 mysql server啟動生成的。已經根據你在更改完my.cnf後重啟mysql時重新生成了一次,資訊已跟著變更
進行測試:
[root@redhat vmail]# mail test@test.com
Subject: nihao
dabendan
.
EOT
[root@redhat vmail]# mailq
Mail queue is empty
[root@redhat vmail]# ls
test.com