爛泥:Postfix郵件伺服器搭建之虛擬用戶配置

来源:http://www.cnblogs.com/ilanni/archive/2016/03/19/5294553.html
-Advertisement-
Play Games

本文由ilanniweb提供友情贊助,首發於爛泥行天下 想要獲得更多的文章,可以關註我的微信ilanniweb 在前一篇文章《爛泥:Postfix郵件伺服器搭建之軟體安裝與配置》中,我們介紹了psotfix郵件伺服器搭建所需要的軟體,以及各個軟體的基本配置。 目前已經達到了通過系統用戶可以登錄到po...


本文由ilanniweb提供友情贊助,首發於爛泥行天下

想要獲得更多的文章,可以關註我的微信ilanniweb

在前一篇文章《爛泥:Postfix郵件伺服器搭建之軟體安裝與配置》中,我們介紹了psotfix郵件伺服器搭建所需要的軟體,以及各個軟體的基本配置。

目前已經達到了通過系統用戶可以登錄到postfix郵件伺服器,但是為了管理的方便和系統安全,我們一般是通過postfix的虛擬用戶來管理郵件用戶的。

Postfix虛擬用戶的原理是,先在系統中創建一個用戶,該用戶不能登錄到系統,然後把郵件用戶全部映射到該系統用戶的家目錄下。

對於OS來說所有的操作都是通過該用戶進行的,但是對於postfix的郵件用戶來說又是各自獨立的。這個和vsftpd虛擬用戶的原理相似,然後所有郵件用戶的管理都是通過postfixadmin來進行。

有關postfix的虛擬用戶,我們需要根據不同的軟體進行不同的配置,只有各個軟體的協同配合才能達到自由收發郵件的目的,下麵分別介紹下。

一、postfix配置虛擬用戶

postfix要支持虛擬用戶,需要修改的配置文件比較多。

1.1 修改main.cf文件

首先要修改postfix的主配置文件main.cf,如下:

vim /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.ilanni.com

mydomain = ilanni.com

myorigin = $mydomain

inet_interfaces = all

mydestination = $myhostname, localhost.$mydomain, localhost

local_recipient_maps =

unknown_local_recipient_reject_code = 550

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

debug_peer_level = 2

debugger_command =

     PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin

     ddd $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.6.6/samples

readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES

#啟用SMTP認證

smtpd_sasl_type = dovecot

smtpd_sasl_path = /var/spool/postfix/private/auth

smtpd_sasl_application_name = smtpd

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = $myhostname

broken_sasl_auth_clients = yes

smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,reject_unknown_sender_domain

smtpd_sasl_security_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

smtpd_client_restrictions = permit_sasl_authenticated

smtpd_sasl_security_options = noanonymous

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

#啟用虛擬用戶

virtual_mailbox_base = /home/vmail/

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_uid_maps = static:5000

virtual_gid_maps = static:5000

virtual_transport = dovecot

dovecot_destination_recipient_limit = 1

註意:postfix主配置文件中,需要註意的地方我已經標註出來了,其中還需要說明的是我們在此啟用的虛擬用戶是《爛泥:Postfix郵件伺服器搭建之準備工作》中創建的vmail用戶,該用戶的id是5000,所以在postfix主配置文件會看到vmail的家目錄/home/vmail/,以及vmail的id信息5000。

在以下所有的操作中,如果有vmail相關的信息,這個都是和該用戶進行關聯的。

1.2 修改master.cf文件

在master.cf文件添加如下代碼:

vim /etc/postfix/master.cf

dovecot   unix  -       n       n       -       -       pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}

1.3 資料庫連接相關文件

連接資料庫相關文件有7個,在創建配置文件之前,我們要在/etc/postfix/目錄下建立sql目錄用來存放這些配置如下:

mkdir /etc/postfix/sql/

現在我們來創建這些配置文件,註意這些配置文件中,有關資料庫的部分都是《爛泥:Postfix郵件伺服器搭建之準備工作》中的用戶名、密碼和資料庫。如下:

vim /etc/postfix/sql/mysql_virtual_alias_maps.cf

user = postfix

password = postfix

hosts = localhost

dbname = postfix

query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

lip_image001

vim /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf

user = postfix

password = postfix

hosts = localhost

dbname = postfix

query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

lip_image002

vim /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

user = postfix

password = postfix

hosts = localhost

dbname = postfix

query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

lip_image003

vim /etc/postfix/sql/mysql_virtual_domains_maps.cf

user = postfix

password = postfix

hosts = localhost

dbname = postfix

query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'

lip_image004

vim /etc/postfix/sql/mysql_virtual_mailbox_maps.cf

user = postfix

password = postfix

hosts = localhost

dbname = postfix

query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

lip_image005

vim /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

user = postfix

password = postfix

hosts = localhost

dbname = postfix

query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u','@',alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'

lip_image006

vim /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf

user = postfix

password = postfix

hosts = localhost

dbname = postfix

query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'

lip_image007

1.4 測試sasl與postfix集成

以上配置完畢後,現在我們來測試postfix是否已經正確與cyrus-sasl進行集成,使用如下命令:

telnet mail.ilanni.com 25

ehlo ilanni.com

lip_image008

註意:圖中的ehlo ilanni.com命令,該命令需要手工輸入,而如果出現250-AUTH PLAIN LOGIN和250-AUTH=PLAIN LOGIN兩行,則說明postfix已經正確啟用smtp認證。

二、dovecot虛擬用戶配置

dovecot配置文件比較多,下麵我們一一介紹。

2.1 修改dovecot.conf文件

vim /etc/dovecot/dovecot.conf

protocols = imap pop3

listen = *

!include conf.d/*.conf

passdb {

  driver = sql

  args = /etc/dovecot/dovecot-sql.conf.ext

}

userdb {

  driver = static

  args = uid=5000 gid=5000 home=/home/vmail/%d/%n

}

#調試日誌

auth_debug_passwords=yes

mail_debug=yes

auth_verbose=yes

auth_verbose_passwords=plain

lip_image009

2.2 修改10-auth.conf文件

vim /etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = no

auth_mechanisms = plain login cram-md5

!include auth-system.conf.ext

lip_image010

2.3 修改10-ssl.conf文件

10-ssl.conf文件主要是關於postfix的ssl認證相關的配置,在此我們先禁用ssl。如下:

vim /etc/dovecot/conf.d/10-ssl.conf

ssl = no

lip_image011

2.4 修改10-mail.conf文件

10-mail.conf文件主要定義郵件用戶存儲相關信息的位置。如下:

vim /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/vmail/%d/%n/Maildir

mbox_write_locks = fcntl

lip_image012

2.5 修改10-logging.conf文件

10-logging.conf文件是定義dovecot日誌的配置文件,我們也可以不啟用此配置文件。但是為了調試我們在此還是啟用了該配置文件選項。

註意:如果後續日誌中提示沒有寫入許可權的話,修改其許可權即可。

vim /etc/dovecot/conf.d/10-logging.conf

info_log_path = /var/log/dovecot_info.log

debug_log_path = /var/log/dovecot_debug.log

lip_image013

2.6 修改10-master.conf文件

10-master.conf文件定義了dovecot的pop3和imap埠,以及其他的一些信息。

vim /etc/dovecot/conf.d/10-master.conf

service imap-login {

  inet_listener imap {

    port = 143

  }

}

service pop3-login {

  inet_listener pop3 {

    port = 110

  }

}

service auth {

   unix_listener auth-userdb {

mode = 0600

    user = vmail

    group = vmail

  }

  # Postfix smtp-auth

unix_listener /var/spool/postfix/private/auth {

    mode = 0666

    user = postfix

  }

}

lip_image014

2.7 修改15-lda.conf文件

修改15-lda.conf文件,是為了防止dovecot報錯,錯誤如下:

lip_image015

我們只需在15-lda.conf文件中添加postmaster_address = [email protected]即可,如下:

vim /etc/dovecot/conf.d/15-lda.conf

postmaster_address = [email protected]

lip_image016

2.8 添加dovecot-sql.conf.ext文件

vim /etc/dovecot/dovecot-sql.conf.ext

driver = mysql

connect = host=localhost dbname=postfix user=postfix password=postfix

default_pass_scheme = MD5-CRYPT

password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1'

user_query = SELECT maildir, 5000 AS uid, 5000 AS gid, CONCAT('dict:storage=',floor(quota/1000),' proxy::quota') as quota FROM mailbox WHERE username = '%u' AND active='1'

lip_image017

三、postfixadmin配置

dovecot配置完畢後,我們現在來配置postfixadmin,postfixadmin需要lamp的支持。有關lamp的安裝,可以查看《爛泥:Postfix郵件伺服器搭建之準備工作》。

3.1 安裝postfixadmin

postfixadmin不能通過yum方式進行安裝,我們需要去下載postfixadmin軟體包,如下:

wget http://nchc.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.93/postfixadmin-2.93.tar.gz

tar -xf postfixadmin-2.93.tar.gz

mv postfixadmin-2.93 /var/www/html/postfixadmin

chown -R apache:apache /var/www/html/postfixadmin

chmod -R 755 /var/www/html/postfixadmin

lip_image018

3.2 配置postfixadmin

postfixadmin安裝完畢後,我們現在來配置postfixadmin。postfixadmin的配置文件是config.inc.php,我們只需修改這個文件即可。如下:

vim /var/www/html/postfixadmin/config.inc.php

$CONF['configured'] = true;

$CONF['default_language'] = 'cn';

$CONF['database_type'] = 'mysql';

$CONF['database_host'] = 'localhost';

$CONF['database_user'] = 'postfix';

$CONF['database_password'] = 'postfix';

$CONF['database_name'] = 'postfix';

$CONF['encrypt'] = 'dovecot:CRAM-MD5';

$CONF['dovecotpw'] = "/usr/bin/doveadm pw";

$CONF['domain_path'] = 'YES';

$CONF['domain_in_mailbox'] = 'NO';

$CONF['aliases'] = '1000';

$CONF['mailboxes'] = '1000';

$CONF['maxquota'] = '1000';

$CONF['fetchmail'] = 'NO';

$CONF['quota'] = 'YES';

$CONF['used_quotas'] = 'YES';

$CONF['new_quota_table'] = 'YES';

3.3 啟動postfixadmin

postfixadmin配置完畢後,我們現在來啟動postfixadmin。

Postfixadmin不是一個單獨的程式,它是依賴於apache的,所以我們只需要啟動apache即可。如下:

/etc/init.d/httpd start

chkconfig httpd on

lip_image019

現在我們在瀏覽器中打開如下連接:

http://mail.ilanni.com/postfixadmin/setup.php

lip_image020

通過上圖,我們可以很明顯的看出postfixadmin已經正常啟動,而且其所依賴的各個組件也已經正常安裝和配置。

3.4 修改預設後臺管理密碼

在postfixadmin的配置文件中有一個選項是填寫管理員後臺管理密碼的,預設是changeme。如下:

lip_image021

現在我們來修改預設密碼,如下:

lip_image022

lip_image023

通過上圖,我們可以很明顯的看出預設已經密碼已經被我們成功的修改了。

修改完畢後,我們複製該密碼到postfixadmin的配置文件,將原來的changeme替換成功現在的加密後的密碼即可。如下:

vim /var/www/html/postfixadmin/config.inc.php

lip_image024

3.5 添加管理員賬戶

後臺管理密碼修改完畢後,我們現在來添加一個管理員賬號[email protected]。如下:

lip_image025

lip_image026

通過上圖,我們可以很明顯的看出管理員[email protected]已經添加成功。

現在我們來使用這個管理員登錄看看後臺,後臺登錄地址為http://mail.ilanni.com/postfixadmin/login.php

如下:

lip_image027

lip_image028

通過上圖,我們可以很明顯的看出新添加的管理員已經可以登錄postfixadmin管理後臺了。

postfixadmin管理員登錄地址是:

http://mail.haiyn.com/postfixadmin/login.php

postfixadmin 普通用戶登錄地址是:

http://mail.ilanni.com/postfixadmin/users/login.php

四、添加postfix虛擬域

postfixadmin是支持多功能變數名稱管理的,在此我們先添加一個功能變數名稱ilanni.com。如下:

lip_image029

lip_image030

lip_image031

通過上圖,我們可以很明顯的看出ilanni.com這個功能變數名稱已經添加成功。

五、添加郵箱用戶

ilanni.com這個功能變數名稱添加完畢後,我們現在來給這個功能變數名稱添加新的郵件用戶。如下:

lip_image032

lip_image033

lip_image034

通過上圖,我們可以很明顯的看出[email protected],這個郵件用戶已經被成功創建。

六、使用郵件客戶端測試

[email protected]郵件用戶被添加後,我們現在來使用郵件客戶端測試是否可以正常發送和收取郵件。

6.1 連接郵件伺服器測試

首先我們先來測試該用戶是否可以正常連接郵件伺服器,如下:

lip_image035

lip_image036

lip_image037

通過上圖,我們可以很明顯的看出郵件用戶ilannimail已經正常連接postfix郵件伺服器。

6.2 測試發送郵件功能

現在我們來測試發送郵件功能,如下:

lip_image038

lip_image039

通過上圖,我們可以很明顯的看出ilaninmail用戶已經成功的向外域郵箱發送郵件。

6.3 測試收取郵件功能

現在我們來測試收取郵件功能,如下:

lip_image040

lip_image041

通過上圖,我們可以很明顯的看出ilaninmail用戶已經成功的向收取外域郵箱發送過來的郵件。

七、查看postfixadmin資料庫

現在我們來查看下postfixadmin資料庫postfix中的數據,如下:

lip_image042

這個是postfix資料庫postfixadmin所生成的表。

lip_image043

admin表中存儲的是管理員用戶。

lip_image044

alias表中存儲的是所有的郵件用戶。

lip_image045

domain表中存儲的是虛擬功能變數名稱。

八、查看postfix對系統產生的影響

本篇文章我們主要是針對postfix虛擬用戶,進行操作的。現在我們虛擬功能變數名稱已經添加,郵件用戶也已經創建。

那麼我們現在來查看下,我們的這些操作在系統上產生了哪些影響。

8.1 查看郵件用戶家目錄

切換到vmail用戶的家目錄,如下:

ll /home/vmail/

lip_image046

通過上圖,我們可以很明顯的看出ilanni.com這個虛擬功能變數名稱在vmail用戶的家目錄下產生了ilanni.com這個目錄。

現在我們再來看看ilanni.com這個目錄下都有哪些文件,如下:

ll /home/vmail/ilanni.com/

lip_image047

通過上圖,我們可以很明顯的看出在ilanni.com這個虛目錄下產生了ilannimail和wxy這兩個目錄,而這兩個目錄名稱剛好對應我們前面創建的郵件用戶ilannimail和wxy。

這樣看起來就剛剛好和我們前面解釋的postfix虛擬用戶原理相照應了。

8.2 查看郵件用戶個數

我們現在查看ilannimail目錄下文件,如下:

ll /home/vmail/ilanni.com/ilannimail/Maildir/

lip_image048

通過上圖,我們可以很明顯的看出該目錄下麵文件不多,現在我們主要關註cur目錄。因為通過該目錄下的文件個數,可以知道ilannimail用戶有多少封郵件以下兩張截圖,就可以證明這個說法。如下:

cd /home/vmail/ilanni.com/ilannimail/Maildir/cur

lip_image049

可以看到cur目錄下有三個文件。

lip_image050

通過foxmail客戶端也可以看到ilanimail用戶確實只有三封郵件,這就證明瞭,我們前面的猜測是正確的。知道cur目錄下的文件個數,可以知道ilannimail用戶有多少封郵件。

8.3 查看文件對應郵件

由cur目錄下的文件個數可知目前ilannimail有三封郵件,那麼這三個文件分別對應哪三封郵件呢?

其實我們可以根據文件的名稱中的unix時間戳來定位,現在我們以1457768362.M305033P28093.iZ23r061d7kZ,S=4526,W=4615:2,RS文件為例。

通過文件名,我們可以知道該文件的unix時間戳是1457768362,那麼可以查找這個unix時間戳對應的實際時間,如下:

lip_image051

通過上圖,可以知曉是15:39:22這封郵件。

當然我們也可以查看這個文件的內容,如下:

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

-Advertisement-
Play Games
更多相關文章
  • 今天用到的oracle資料庫,但是發現以前設置的密碼,忘記了,怎麼輸入都不對,所以從網上找了一下資料,解決了,然後整理分享給大家。 一、遇到的問題: 1.、忘記除SYS、SYSTEM用戶之外的用戶的登錄密碼。 2.、忘記SYS用戶,或者是SYSTEM用戶的密碼。 3.、如果SYS,SYSTEM用戶的
  • 在伺服器A資料庫TEST新建了一個本地發佈(Local Publications)RPL_GES_MIS_TEST,在伺服器B資料庫RPL_TEST上創建了一個本地訂閱(Local Subscriptions),它訂閱了了這個發佈RPL_GES_MIS_TEST.如下截圖所示,本地發佈只有DB_OB...
  • Spark官方文檔 中文翻譯 轉載請註明出處: "http://www.cnblogs.com/BYRans/" "1 概述(Overview)" "2 引入Spark(Linking with Spark)" "3 初始化Spark(Initializing Spark)" "3.1 使用Spar
  • cubrid的中sql查詢語法insert into 官方文檔是英文的,看不明白可以參看ocracle的同類函數說明.很多都是一樣的. INSERT INTO a_tbl1(id) VALUES (4), (5); insert a single row with SET clauses INSER
  • cubrid的中sql查詢語法groupby GROUP BY ... HAVING Clause 按dept_no分組 SELECT dept_no, avg(sales_amount) FROM sales_tbl GROUP BY dept_no; 分組前先執行條件比較 SELECT dept
  • cubrid的中sql查詢語法 SELECT [ ] [{TO | INTO} ] [FROM ] [WHERE ] [GROUP BY {col_name | expr} [ASC | DESC], ...[WITH ROLLUP]] [HAVING ] [ORDER BY {col_name |
  • declare @bussHallId nvarchar(255)= '2,3' declare @strWhere nvarchar(255)= '' declare @strMain nvarchar(500) if(@bussHallId is not null) set @strWhere ...
  • 作用: 在需要引入的頭文件比較多的時候可以使用, 創建成功之後,引入頭文件.之後再使用的時候不需要引入頭文件 步驟: 1.創建一個這樣的文件 2.進行一下設置 路徑的設置 修改為yes,預編譯這個文件 3.報錯時候的解決 原因是上邊的路徑錯誤.重新設置路徑 錯誤提示
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...