邮件服务配置(虚拟域虚拟用户)
郵件服務配置(虛擬域&虛擬用戶)
本文首發:https://www.somata.net/2019/virtual_mail_server_config_with_mariadb.html
現在我做的是:
Linux + httpd + php + mariadb + postfix + dovecot + phpMyAdmin + postfixadmin + roundcubemail
這里我將會講解 如何制作基于 虛擬域和虛擬用戶 的郵件服務。需要的軟件如下:
- phpMyAdmin-3.4.3-all-languages.tar.xz (download:https://www.phpmyadmin.net/files/3.4.3/)
- postfixadmin-3.2.tar.gz(download:http://postfixadmin.sourceforge.net/)
- roundcubemail-1.3.9-complete.tar.gz(download:https://roundcube.net/download/)
這里我已經整理好了 https://pan.baidu.com/s/1TT2EUGRnU2tqaiUwRsPUMQ 提取碼:0i6x
再整理好需要的軟件之后。 我們開始搭建郵件服務。
關閉selinux
郵件服務有太多的權限要求,為了方便配置, 直接關閉selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 使用這條命令進行修改 reboot # 重啟電腦使其生效配置yum源,然后開始安裝軟件
修改yum源
mkdir /root/back # 建立備份目錄 mv /etc/yum.repos.d/* /root/back/ # 將默認配置移動到備份目錄 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 下載基礎yum源 curl -o /etc/yum.repos.d/CentOS-Epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # 下載擴展yum源 yum makecache # 建立緩存安裝軟件
yum install httpd mod_ssl mariadb mariadb-server php dovecot dovecot-mysql vim wget nc php-xml php-mbstring php-mysql php-mcrypt php-imap php-intl php-ldap php-gd bash-completion bash-completion-extras bind bind-utils配置LAMP環境,同時裝載phpMyAdmin
啟動lamp環境
systemctl enable httpd systemctl enable mariadb systemctl start httpd systemctl start mariadb初始化數據庫:
mysql_secure_installation
開啟防火墻
上傳phpMyAdmin-3.4.3-all-languages.tar.xz, 上傳方法 和 過程 省略
# 切換到上傳目錄 tar -xf phpMyAdmin-3.4.3-all-languages.tar.xz # 解壓web程序 mv phpMyAdmin-3.4.3-all-languages /var/www/html/ # 移動到web 根目錄下 ln -s phpMyAdmin-3.4.3-all-languages phpMyAdmin # 創建一個軟連接便于訪問 cd phpMyAdmin # 切換到phpMyAdmin目錄 cp config.sample.inc.php config.inc.php # 復制配置文件 openssl rand -base64 32 # 生成一串隨機數, 然后需要導入到配置文件中。 自行復制 vim config.inc.php # 編輯配置文件
這樣phpMyAdmin 就可以正常訪問了
裝載postfixadmin
同樣的先上傳postfixadmin。
# 切換到上傳目錄 tar -xf postfixadmin-3.2.tar.gz # 解壓文件 mv postfixadmin-3.2 /var/www/html/ # 移動到web根目錄 ln -s postfixadmin-3.2/public/ postfixadmin # 創建軟連接便于訪問后面的步驟開始初始化postfixadmin。 如有疑問, 請查看 postfixadmin-3.2/INSTALL.TXT
創建數據庫用戶
通過phpMyAdmin 創建用戶
配置用戶信息。然后新建用戶。 即可
通過命令行完成配置
mysql -uroot -p123456 # mysql 通過客戶端配置數據庫。 -p 后面直接跟密碼create database postfix; GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfixadmin'; # 設定權限, 由于沒有檢測到用戶。所以同時創建用戶 FLUSH PRIVILEGES; # 刷新權限創建和編輯配置文件
# 切換到postfixadmin 的根目錄 # cd /var/www/html/postfixadmin-3.2/ vim config.local.php # 編輯新建配置文件。 然后輸入以下內容 <?php $CONF['database_type'] = 'mysqli'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'postfixadmin'; $CONF['database_name'] = 'postfix';$CONF['configured'] = true; ?> vim config.inc.php # 編輯第二個配置文件找到,并修改如下內容
$CONF['configured'] = true;$CONF['default_language'] = 'cn';$CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'postfixadmin'; $CONF['database_name'] = 'postfix';$CONF['admin_email'] = 'root@localhost';這樣就完成了postfix的基礎配置
還有, 需要創建一個緩存目錄
mkdir templates_c # 創建緩存目錄 chown -R apache:apache templates_c # 更改屬主組進入postfix配置界面,繼續完成配置
進入setup.php完成配置。
然后拉到底。 添加以下setup.php的密碼
然后創建管理員用戶。
然后出現如下提示,即為成功:
然后登入賬戶。
新建somata.com域
創建用戶
創建用戶mail1 和 mail2
提示如下,即為成功
那么到此為止, postfixadmin 的配置就已經完成了。 后面會開始 postfix 和 dovecot 的服務配置。
注意: 以上創建域 和 用戶 等 其實都是存儲在數據庫當中,并非真是存在的用戶。 所以我們需要通過配置postfix 和 dovecot 通過讀取數據庫中的信息來完成配置。
配置DNS服務器
這里我使用bind 來做DNS服務器。
DNS 我就不多解釋了。直接上配置文件
配置/etc/named.conf
配置/var/named/named.somata.com
$TTL 1D somata.com. IN SOA ns.somata.com. root.somata.com. (2019052701 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS ns.somata.com.MX 10 mail.somata.com. ns A 172.16.102.141 mail A 172.16.102.141 www A 172.16.102.141啟動named
chgrp named /var/named/named.somata.com systemctl restart named firewall-cmd --add-service=dns配置postfix
postfixadmin中 也介紹了如何配置postfix, 他的介紹在這里DOCUMENTS/POSTFIX_CONF.txt 如果沒有看懂我接下來的步驟,可以嘗試去看看這個文件
添加用于讀取和寫入郵件用的用戶:
groupadd -g 2000 vmail useradd -r -u 2000 -g 2000 -d /var/spool/mail/vmail -c "Virtual mail user" vmail # 這里還是需要注意。 UID必須超過1000, 我也不知道為什么。配置/etc/postfix/main.cf
queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix # 配置主機名等信息 myhostname = mail.somata.com mydomain = somata.com myorigin = $mydomain # 配置監聽端口 inet_interfaces = all inet_protocols = ipv4 # 配置接受的域列表。 注意這里絕對不能添加與虛擬域相同的域名。否則會導致郵件無法發送。 mydestination = $myhostname, localhost.$mydomain, localhost unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ smtpd_banner = $myhostname ESMTP $mail_name debug_peer_level = 2 debugger_command =PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/binddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.10.1/samples readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES # 以下是虛擬用戶配置 # 設置postfix 讀取和寫入是的uid 和 gid virtual_gid_maps = static:2000 virtual_uid_maps = static:2000 # 虛擬域, 這里配置通過mysql來實現。 這里指定的文件 后面就會創建 virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf # 虛擬域中,的別名設置 virtual_alias_maps =proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf # 虛擬域中,用戶郵箱設置 virtual_mailbox_maps =proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf # 設置基本路徑。 上面查詢到的郵箱地址是相對的。所以需要設置基本路徑來確認郵箱位置。 virtual_mailbox_base = /var/mail/vmail # 以上的這些虛擬化配置其實還可以簡化為如下。同樣可以使用,但是缺少了別名的功能 #virtual_gid_maps = static:2000 #virtual_uid_maps = static:2000 #virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf #virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf #virtual_mailbox_base = /var/mail/vmail# 用戶認證配置。 smtp 可以不用設置用戶認證。也能使用 # 拒絕非正常的客戶端 broken_sasl_auth_clients = yes # 啟用sasl認證 smtpd_sasl_auth_enable = yes # 配置認證方式為dovecot smtpd_sasl_type = dovecot # 配置認證套接字的相對路徑 smtpd_sasl_path = private/auth # 配置拒絕規則 smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,reject_unknown_sender_domain # permit_mynetworks 允許本地網絡發送郵件 # permit_sasl_authenticated 允許通過認證的用戶發送郵件 # reject_unauth_destination 拒絕不是發往本地的郵件 # reject_unknown_sender_domain 拒絕未知發件域名然后我們通過postfixadmin提供的腳本生成以上虛擬域所需要的文件
切換到postfix的安裝目錄,執行如下命令
su nobody -s /bin/bash -c 'bash POSTFIX_CONF.txt'
然后這里會返回文件路徑,我們進入腳本創建的目錄,復制到指定目錄
配置dovecot
postfixadmin 也提供了的 dovecot的配置方法:DOCUMENTS/DOVECOT.txt 如果我的配置沒有看懂可以選擇查看
先配置第一個文件dovecot.conf
protocols = pop3 imap # 開啟pop3 和 imap 服務 listen = * # 監聽ipv4端口然后配置第二個文件conf.d/10-auth.conf
disable_plaintext_auth = no # 設置關閉強制加密認證 auth_mechanisms = plain login # 設置認證方法 #!include auth-system.conf.ext # 注釋使用auth-system的認證方式 !include auth-sql.conf.ext # 使用auth-sql的認證方式配置第三個文件conf.d/10-mail.conf
mail_location = maildir:/var/mail/vmail/%d/%n # 設置郵箱格式 first_valid_uid = 2000 # 設置讀取和寫入的uid 下面使gid first_valid_gid = 2000配置第三個文件conf.d/10-ssl.conf
ssl = no # 取消ssl加密 注釋下面內容 #ssl_cert = </etc/pki/dovecot/certs/dovecot.pem #ssl_key = </etc/pki/dovecot/private/dovecot.pem配置第四個文件conf.d/10-master.conf
unix_listener /var/spool/postfix/private/auth { # 為postfix 提供認證服務套接字mode = 0666 # 設置權限user = postfix # 設置屬主group = postfix # 設置屬組}配置第五個文件dovecot-sql.conf.ext
driver = mysql # 設置驅動為mysql default_pass_scheme = MD5-CRYPT # 設置加密方法為MD5 connect = host=localhost dbname=postfix user=postfix password=postfixadmin # 設置連接參數 password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1' # 設置查詢密碼的sql語句 user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, 2000 AS uid, 2000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1' # 設置查詢用戶和郵箱的sql語句測試是否可以使用
添加臨時防火墻
firewall-cmd --add-service=pop3 firewall-cmd --add-service=smtp firewall-cmd --add-service=dns配置mariadb 記錄 日志, 用于查看是否正常。 如果有問題先看看/var/log/mariadb/access.log 中的查詢請求是否正常。
[mysqld] log=/var/log/mariadb/access.log systemctl restart mariadb然后我們使用foxmail 來測試 服務是否可用。
這里我們也可以看到,收到了郵件,完全可以使用了。
裝載webmail
這里我使用了roundcubemail, 下面是配置步驟。
tar -xf roundcubemail-1.3.9-complete.tar.gz # 解壓roundcubemail mv roundcubemail-1.3.9 /var/www/html/ # 移動 cd /var/www/html/ # 切換目錄 ln -s roundcubemail-1.3.9 webmail # 創建一個軟連接 方便訪問與 postfix 相同, 進入 phpMyAdmin 或者 命令行。 創建數據庫用戶
然后進入安裝界面, 這里先確認環境是否可以使用
然后拉到底,點擊next
到了第二步。 配置 config
最后點擊 CREATE CONFIG
然后根據提示將返回內容保存至指定位置
最后回到登入界面。 使用郵件賬號登入即可。
用戶界面如下, roundcube 還是挺好看。而且挺好用的:
安全配置
上面的所有步驟都已經配置完成了,那么現在就開始安全方便的配置。 比如說這些服務如果是明文傳輸肯定是會泄露的。所以都需要配置SSL。 然后還需要配置防火墻,禁止連接其余端口。
這里我們已經安裝了mod_ssl 。 而且mod_ssl 已經為我們提供了默認的配置。 所以我們只需要修改以下使用的密鑰即可。
這里我在自己的服務器上使用openssl做了一個證書服務器。 并且已經為測試主機安裝了證書 。 操作步驟就省略了。
# 創建證書 openssl genrsa -out private/postfix.pem 2048 # 創建密鑰 openssl req -new -key private/postfix.key -out postfix.csr # 創建證書申請 openssl ca -in postfix.csr -out certs/postfix.crt -days 365 # 使用證書服務簽發證書編輯文件/etc/httpd/conf.d/ssl.conf
主要修改如下2點:
編輯文件/etc/httpd/conf/httpd.conf
# URL重定向。 設置自動重定向到www.somata.com <VirtualHost *:80>RewriteEngine onRewritecond %{HTTPS} !=onRewriteRule ^(.*)?$ https://www.somata.com$1 [L,R] </VirtualHost> # 限制 postfixadmin 和 phpMyAdmin 的訪問權限 <Directory "/var/www/html/postfixadmin-3.2/">Order allow,denyallow from 172.16.102.188/32deny from all </Directory> <Directory "/var/www/html/phpMyAdmin-3.4.3-all-languages/">Order allow,denyallow from 172.16.102.188/32deny from all </Directory> <Directory "/var/www/html/postfixadmin/">Order allow,denyallow from 172.16.102.188/32deny from all </Directory> <Directory "/var/www/html/phpMyAdmin/">Order allow,denyallow from 172.16.102.188/32deny from all </Directory>然后移除 幾個web程序的初始化 網頁
mv /var/www/html/postfixadmin-3.2/public/setup.php /tmp/ mv /var/www/html/roundcubemail-1.3.9/installer/ /tmp/ mv /var/www/html/phpMyAdmin-3.4.3-all-languages/setup/ /tmp/編輯/etc/postfix/main.cf
然后再編輯/etc/postfix/master.cf
smtps inet n - n - - smtpd # 去除這一行的注釋即可 systemcl restart postfix # 重啟postfix服務編輯/etc/dovecot/conf.d/10-ssl.conf
編輯/etc/my.cnf
本文經「原本」原創認證,作者乾坤盤,訪問yuanben.io查詢【63P7QJPF】獲取授權信息。
總結
以上是生活随笔為你收集整理的邮件服务配置(虚拟域虚拟用户)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: scp 拷贝文件夹到远程服务器被拒绝ss
- 下一篇: 计算机在开机后显示器在显示桌面,电脑开机