បានប្រកាសជាយូរមកហើយ - ឥឡូវនេះការពិត ៖ ក្រុមហ៊ុន Microsoft បានបិទការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវដោយពាក្យសម្ងាត់សម្រាប់ពិធីការមួយចំនួននៅក្នុង Exchange Online ចាប់ពីខែកញ្ញា ឆ្នាំ 2022 ដើម្បីគាំទ្រ oAuth2 ។ បញ្ហា GitHub នៃ បណ្ណាល័យ និង ស្គ្រីបបម្រុងទុកជាច្រើន ធ្វើឱ្យវាច្បាស់ថាការផ្លាស់ប្តូរនេះបានធ្វើឱ្យអ្នកគ្រប់គ្រងជាច្រើនភ្ញាក់ផ្អើល។ ខាងក្រោមនេះ យើងបង្ហាញពីរបៀបដែលអ្នកអាចបន្តចូលប្រើមាតិកានៃប្រអប់សំបុត្រ Exchange របស់អ្នក ដោយមានជំនួយពី oAuth2 តាមរយៈ PHP តាមរយៈ IMAP ។
តាមទស្សនៈសុវត្ថិភាព ការផ្លាស់ប្តូររបស់ Microsoft គឺត្រឹមត្រូវណាស់ ប៉ុន្តែភាពស្មុគស្មាញនៃការចូលប្រើកម្មវិធីទៅកាន់អ៊ីមែលរបស់ខ្លួនបានកើនឡើងបន្តិច។ ឧទាហរណ៍ ប្រសិនបើអ្នកប្រើ បណ្ណាល័យ barbushin/php-imap ដែល បានប្រើយ៉ាងទូលំទូលាយ ការចូលប្រើមានដូចខាងក្រោម:
734a82898010e2fcb02c72c3cd9702c2
វាគ្រាន់តែមិនដំណើរការទៀតទេ។ ដើម្បីបង្កើតការតភ្ជាប់តាមរយៈ oAuth2 ការលំបាកដំបូងគឺដើម្បីទទួលបានសញ្ញាសម្ងាត់ចូលប្រើ។ ហើយសម្រាប់នេះអ្នកត្រូវទទួលយកឧបសគ្គពីរ។
Azure Active Directory
ជំហានខាងក្រោមចុះឈ្មោះកម្មវិធីថ្មីនៅក្នុង Azure Active Directory:













PowerShell
ឥឡូវនេះយើងបើកកម្មវិធីនៅក្នុង Microsoft PowerShell (របៀបអ្នកគ្រប់គ្រង) និងផ្តល់ការអនុញ្ញាតទៅប្រអប់សំបុត្រនីមួយៗ (<TENANTID>, <CLIENTID>, <OBJECTID>, <EMAIL> ត្រូវតែជំនួសក្នុងករណីនីមួយៗ):
Install-Module -Name ExchangeOnlineManagement
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -Organization <TENANTID>
New-ServicePrincipal -AppId <CLIENTID> -ServiceId <OBJECTID>
Add-MailboxPermission -Identity "<EMAIL>" -User <OBJECTID> -AccessRights FullAccess
...
នៅពេលដែលអ្នកបានធ្វើរួច នៅសល់មិនមែនជាវិទ្យាសាស្ត្ររ៉ុក្កែតទេ។ ដោយសារ barbushin/php-imap មិនគាំទ្រ oAuth2 អ្នកអាចភ្ជាប់ជាមួយបណ្ណាល័យជំនួស Webklex/php-imap (ដែលមានអត្ថប្រយោជន៍ផងដែរដែលមិនតម្រូវឱ្យមាន ម៉ូឌុល PHP IMAP ) ។:
734a82898010e2fcb02c72c3cd9702c2
ទោះយ៉ាងណាក៏ដោយ បណ្ណាល័យដែលមិនគាំទ្រជាផ្លូវការ oAuth2 ក៏អាចប្រើជាមួយប្រូកស៊ីដូចជា simonrob/email-oauth2-proxy ធ្វើឱ្យវាអាចដំណើរការបាន។ បន្ទាប់ពីនេះ ទាញយក និងការដំឡើងតាមរយៈ python -m pip install -r requirements-no-gui.txt (ត្រូវការ Python ≥3.6) អ្នកកែសម្រួលឯកសារ emailproxy.config ឧ. ដូចខាងក្រោម (ជំនួសពេលនេះ <TENANTID>, <CLIENTID>, <CLIENTSECRET> និង <EMAIL>):
[Server setup]
[IMAP-1993]
local_address = localhost
server_address = outlook.office365.com
server_port = 993
[Account setup]
[<EMAIL>]
token_url = https://login.microsoftonline.com/<TENANTID>/oauth2/v2.0/token
oauth2_scope = https://outlook.office365.com/.default
redirect_uri = http://localhost:8080
client_id = <CLIENTID>
client_secret = <CLIENTSECRET>
បន្ទាប់មកអ្នកចាប់ផ្តើមប្រូកស៊ីជាមួយ python emailproxy.py --no-gui ហើយឥឡូវនេះអាចចូលទៅកាន់ IP ដែលមិនបានអ៊ិនគ្រីប localhost នៅលើច្រក 1993 ភ្ជាប់តាមរយៈ Basic Auth ធម្មតា (និងការកំណត់ពាក្យសម្ងាត់ណាមួយ)។ ប្រសិនបើអ្នកចង់ចាប់ផ្តើមប្រូកស៊ីជាសេវាកម្មក្នុងផ្ទៃខាងក្រោយ នៅពេលអ្នកចាប់ផ្តើមប្រព័ន្ធ អ្នកអាចប្រើឧទាហរណ៍ ប្រព័ន្ធ:
sudo systemctl edit --force --full emailproxy.service
[Unit]
Description=Email OAuth 2.0 Proxy
[Service]
ExecStart=/usr/bin/python /path/to/emailproxy.py --no-gui
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl enable emailproxy.service --now
sudo systemctl status emailproxy.service
sudo systemctl start emailproxy.service
ប្រសិនបើការតភ្ជាប់ដែលបានអ៊ិនគ្រីបត្រូវបានទាមទារ នេះក៏អាចធ្វើទៅបានដែរ - សម្រាប់វាដំបូងអ្នកបង្កើតសោឯកជន និងវិញ្ញាបនបត្រដែលចុះហត្ថលេខាដោយខ្លួនឯង:
openssl genrsa -out key.pem 3072
openssl req -new -x509 -key key.pem -out cert.pem -days 360
បន្ទាប់មកឯកសារយោងត្រូវបានធ្វើឡើងនៅក្នុង emailproxy.config ឯកសារទាំងពីរនេះ។:
local_key_path = /path/to/key.pem
local_certificate_path = /path/to/cert.pem
ការផ្ញើអ៊ីមែល
អ្នកណាដែលចង់ផ្ញើអ៊ីមែលជាលក្ខណៈកម្មវិធីតាមរយៈ Microsoft Exchange Online ក៏កំពុងប្រឈមមុខនឹងការផ្លាស់ប្តូរជាមូលដ្ឋានផងដែរ៖ Microsoft បានបិទការផ្ទៀងផ្ទាត់ឈ្មោះអ្នកប្រើប្រាស់ និងពាក្យសម្ងាត់បុរាណសម្រាប់ SMTP នៅក្នុង Exchange Online។ អ្វីដែលសម្រេចបានដោយគ្រាន់តែសរសេរកូដពីរបីបន្ទាត់អស់រយៈពេលជាច្រើនឆ្នាំ ឥឡូវនេះតម្រូវឱ្យមានការបង្វែរតាមរយៈ OAuth2 - រួមទាំងការចុះឈ្មោះកម្មវិធីនៅក្នុង Azure Active Directory វិញ្ញាបនបត្រ និងការគ្រប់គ្រងសញ្ញាសម្ងាត់។ យើងអាចអនុវត្តវិធីសាស្រ្តដូចគ្នាសម្រាប់ការផ្ញើអ៊ីមែល បន្ថែមពីលើការទទួលអ៊ីមែល។




ការផ្ញើ SMTP តាមរយៈ Microsoft Exchange 365 អនុវត្តតាមគោលការណ៍ដូចគ្នានឹងការចូលប្រើ IMAP៖ ចាប់តាំងពីការបិទការផ្ទៀងផ្ទាត់មូលដ្ឋានមក គ្មានជម្រើសផ្សេងក្រៅពី OAuth2 ទេ។ បន្ទាប់ពីបន្ថែមការអនុញ្ញាត "SMTP.SendAsApp" នៅក្នុងការចុះឈ្មោះកម្មវិធី Azure និងផ្តល់ការយល់ព្រមពីអ្នកគ្រប់គ្រង ការផ្ញើអាចធ្វើបាន ឧទាហរណ៍ ជាមួយ... PHPMailer នេះត្រូវបានអនុវត្ត។ ជំនួសឲ្យការដាក់ស្នើឈ្មោះអ្នកប្រើ និងពាក្យសម្ងាត់ដូចមុន ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវប្រឆាំងនឹងម៉ាស៊ីនបម្រើ SMTP ឥឡូវប្រើសញ្ញាសម្ងាត់ចូលដំណើរការ។ smtp.office365.com:
734a82898010e2fcb02c72c3cd9702c2
ការខិតខំប្រឹងប្រែងដំឡើងបន្ថែមដំបូងឡើយអាចហាក់ដូចជាគួរឱ្យខ្លាច ប៉ុន្តែវានឹងផ្តល់ផលល្អនៅទីបំផុត៖ ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវដោយផ្អែកលើ OAuth2 មានសុវត្ថិភាពជាងគួរឱ្យកត់សម្គាល់ ព្រោះមិនចាំបាច់រក្សាទុកពាក្យសម្ងាត់អត្ថបទធម្មតានៅក្នុងឯកសារកំណត់រចនាសម្ព័ន្ធ ឬស្គ្រីបទេ - ហើយសញ្ញាសម្ងាត់ចូលប្រើក៏អាចមានកំណត់ពេលវេលាផងដែរ ហើយការអនុញ្ញាតរបស់វាត្រូវបានគ្រប់គ្រងដោយភាពជាក់លាក់។ អ្វីដែលគួរនិយាយនៅទីនេះគឺបណ្ណាល័យ mailhelper ដែលផ្តល់ជូននូវ API ងាយស្រួលសម្រាប់ទទួល និងផ្ញើអ៊ីមែល។