基於OPENldap搭建postfix 虛擬用戶

来源:https://www.cnblogs.com/somata/archive/2019/08/05/11301946.html
-Advertisement-
Play Games

postfix 虛擬用戶 postfix + dovecot + openldap 製作虛擬郵件用戶 這裡使用的虛擬郵件用戶的方法是我自己研究的,可能會有不對或則不好的地方,望指出。由於之前已經寫過MariaDB作為資料庫的虛擬用戶,所以這裡會有很多地方會簡化配置和講解,如果沒有看懂可以看看這篇文章 ...


postfix 虛擬用戶

postfix + dovecot + openldap 製作虛擬郵件用戶

這裡使用的虛擬郵件用戶的方法是我自己研究的,可能會有不對或則不好的地方,望指出。
由於之前已經寫過MariaDB作為資料庫的虛擬用戶,所以這裡會有很多地方會簡化配置和講解,如果沒有看懂可以看看這篇文章:郵件服務配置(虛擬域&虛擬用戶)
有關於openldap方面的配置這裡不多做解釋,更多的查看這篇文章LDAP 服務搭建和後期管理,這裡主要還是寫有關於虛擬郵件用戶的相關配置。
同時這裡我使用debian9作為平臺。

1. OPENldap添加用戶

# file: mail.ldif

# MAIL組
dn: ou=MAIL,dc=black,dc=com
objectClass: organizationalUnit
ou: MAIL
#User1
dn: uid=User1,ou=MAIL,dc=black,dc=com
objectClass: inetOrgPerson
uid: User1
sn: User1
cn: User1
mail: /home/User1/Maildir/
userPassword: {SSHA}sO5Pfb6GPmGUPQb1o59KXa7yQDGFt6iU        # 密碼生成: doveadm pw -s ssha -p User1
#User2
dn: uid=User2,ou=MAIL,dc=black,dc=com
objectClass: inetOrgPerson
uid: User2
sn: User2
cn: User2
mail: /home/User2/Maildir/
userPassword: {SSHA}E6PyVtdWcXtpfhJLw3NnElBOb63qqPuw

如果有批量的操作,這裡還可是使用腳本:

#!/bin/bash
cat << EOF | ldapadd -D "cn=root,dc=black,dc=com" -w 123456
dn: ou=MAIL,dc=black,dc=com
objectClass: organizationalUnit
ou: MAIL
EOF
for i in {1..2};do
    user=User$i
    password=`doveadm pw -s ssha -p $user`
    cat << EOF | ldapadd -D "cn=root,dc=black,dc=com" -w 123456
dn: uid=$user,ou=MAIL,dc=black,dc=com
objectClass: inetOrgPerson
uid: $user
sn: $user
cn: $user
mail: /home/$user/Maildir/
userPassword: $password
EOF
done

2. postfix 服務配置

# 添加用戶vmail
useradd vmail           # 後面通過查詢得知UID和GID為1004

這裡主要寫 有關虛擬用戶目錄,和用戶配置的部分:

# file: /etc/postfix/main.cf

……
virtual_gid_maps = static:1004                  # 直接固定UID 和 GID
virtual_uid_maps = static:1004
virtual_mailbox_domains = black.com       # 同樣的也固定功能變數名稱
# 這裡需要註意在mydestination 中不能包含該功能變數名稱
virtual_mailbox_maps = ldap:/etc/postfix/ldap.cf    # 指定用戶郵箱的配置文件
virtual_mailbox_base = /                           # 這裡的base路徑設置為 / ,
# 這裡主要是因為ldap不能像MariaDB一樣可是使用concat函數,dovecot中不能設置base路徑,所以在ldap中mail的路徑被設置成了絕對路徑,然後這裡的base路徑設置為/。如果有其他方法請留言或郵件告知。
broken_sasl_auth_clients = yes                  # 拒絕非正常客戶端
smtpd_sasl_auth_enable = yes                   # 開啟sasl認證
smtpd_sasl_type = dovecot                        # 使用dovecot認證
smtpd_sasl_path = private/auth                  # 設置認證套接字
smtpd_recipient_restrictions = permit_sasl_authenticated,reject           # 這裡設在為了強制認證,如果放在生成環境中是不可取的。

ldap.cf 文件:

# file: /etc/postfix/ldap.cf

server_host = localhost             # 伺服器地址
server_port = 389                     # 伺服器埠
timeout = 5                               # 超時時間
bind_dn = cn=root,dc=black,dc=com   # 登入用戶
bind_pw = 123456                     # 登入密碼
search_base = ou=MAIL,dc=black,dc=com       # 搜尋base地址
query_filter = (&(objectClass=inetOrgPerson)(uid=%u))     # 過來規則
result_attribute = mail                # 指定使用那個返回屬性

3. dovecot 服務配置

主要配置一下幾個文件:

# file: /etc/dovecot/dovecot.conf

protocols= pop3            # 開啟pop3服務
listen = *                # 監聽服務類型
!include conf.d/*.conf    # 其他配置
# file: /etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = no        # 關閉不允許為加密密文傳輸
auth_mechanisms = plain login        # 這裡需要再開啟login的認證,否則postix無法使用
!include auth-ldap.conf.ext        # 這裡註釋auth-system.conf.ext,然後開啟auth-ldap.conf.ext
# file /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/%u/Maildir/
namespace inbox {
inbox = yes
}
mail_uid = 1004            # 這裡跟postfix一樣固定UID和GID
mail_gid = 1004
# file:  /etc/dovecot/conf.d/10-master.conf

……
service auth {
unix_listener auth-userdb {
}
    unix_listener /var/spool/postfix/private/auth {        # 為postfix開啟auth認證套接字
    mode = 0660
    user = postfix
    group = postfix
    }
}
……
# file: /etc/dovecot/dovecot-ldap.conf.ext

hosts = localhost:389                # 主機
dn = cn=root,dc=black,dc=com            #登入名稱
dnpass = 123456                    # 密碼
base = ou=MAIL,dc=black,dc=com        # base路徑
user_attrs = mail=home            # 指定返回的屬性
user_filter = (&(objectClass=inetOrgPerson)(uid=%u))        # 用戶過濾參數
pass_attrs = uid=user,userPassword=password    # 密碼過濾參數
pass_filter = (&(objectClass=inetOrgPerson)(uid=%u))
default_pass_scheme = SSHA           # 指定密碼加密方法

4. 許可權配置和測試

首先給vmail用戶添加一下許可權

setfacl -m u:vmail:rwx /home
systemctl restart dovecot
systemctl restart postfix

然後就可是進行測試了,這裡不多講,能寫出來那麼肯定是能通過的:

echo -e "EHLO client\nAUTH LOGIN\nVXNlcjE=\nVXNlcjE=\nMAIL FROM: [email protected]\nRCPT TO: [email protected]\nDATA\nHello,User2\n.\nQUIT\n" | nc 127.0.0.1 25

220 mail.black.com ESMTP Postfix (Debian/GNU)
250-mail.black.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
235 2.7.0 Authentication successful
250 2.1.0 Ok
250 2.1.5 Ok
354 End data with .
250 2.0.0 Ok: queued as 0A38110016B
221 2.0.0 Bye

echo -e "USER User2\nPASS User2\nSTAT\nQUIT\n" | nc 127.0.0.1 110

+OK Dovecot ready.
+OK
+OK Logged in.
+OK 2 804
+OK Logging out.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.進階指令 1.1.du指令 作用:du表示directory used,顯示出目錄所占的磁碟空間大小的情況。 語法:#du -sh 目錄路徑 選項說明: -s:表示sumary,彙總統計 -h:表示以較高可讀性的形式顯示 1.2.df指令 作用:disk free,查看磁碟的剩餘空間的情況。 語 ...
  • 1、目錄操作概述 2、ls顯示目錄內容 命令名稱:ls 命令英文原意:list 命令所在路徑:/bin/ls 執行許可權:所有用戶 功能描述:顯示目錄文件 ls -a 顯示目錄下的所有文件(包括隱藏文件),a就是all的縮寫 ls 顯示目錄(不包括隱藏文件) ls / 顯示根目錄 ls -l 顯示長格 ...
  • CentOS本身不自帶rar環境,因此對於rar文件無法直接解壓,需要先配置rar環境。 首先需要確定自己的系統是64位還是32位的,通過這個命令: [root@localhost]# uname -a 出現的內容中如果有x86_64就是64位的,沒有就是32位的。 後面是X686或X86_64... ...
  • 使用grep時,當一個目錄下有一個包含很多文件的目錄,但也不想搜索它,怎麼辦? 使用 --exclude-dir 選項。 單個目錄示例: grep -rni 'http' --exclude-dir=.git ./ ...
  • 在沒有git add之前: #撤銷所有更改 git checkout . #撤銷指定文件的更改 git checkout -- myfile.txt ...
  • 1、Shell命令行解釋器 1.1 Shell命令解釋器 Shell是一個特殊的應用程式,介於操作系統內核和用戶之間,負責接收用戶輸入的操作指令(命令)併進行解釋,將需要執行的操作傳遞給內核執行。 因此Shell程式在系統中充當了一個“命令解釋器”的角色。類似於windows系統的cmd.exe命令 ...
  • NETCAT netcat是Linux常用的網路工具之一,它能通過TCP和UDP在網路中讀寫數據,通過與其他工具結合和重定向,可以在腳本中以多種方式使用它。 netcat所做的就是在兩臺電腦之間建立鏈接並返回兩個數據流,我們可以建立一個伺服器,傳輸文件,與朋友聊天,傳輸流媒體或者用它作為其它協議的獨 ...
  • step1: 安裝虛擬環境: export WORKON_HOME=$HOME/.virtualenvs #指定virtualenvwrapper環境的目錄 export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.6 #指定virtualenvwrapper ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...