<郵件服務postfix+mysql>MAIL第二篇

Linux.應用發表於2014-06-12

 

環境:本服務是建立在第一篇的基礎之上的,最好搭建好第一篇

 

玩此服務的前提是你的系統裝好了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

重啟mysqlhttpd服務:

之後在瀏覽器中輸入:服務的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有兩種連線方式:

1TCP/IP

2socket

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

 

 

 

相關文章