பரிமாற்றம்/அலுவலகம் 365 க்கு PHP உடன் அணுகல்

நீண்ட காலமாக அறிவிக்கப்பட்டது - இப்போது உண்மை : மைக்ரோசாப்ட் செப்டம்பர் 2022 முதல் oAuth2 க்கு ஆதரவாக Exchange Online இல் சில நெறிமுறைகளுக்கான கடவுச்சொல் மூலம் அங்கீகாரத்தை முடக்கியுள்ளது. பல நூலகங்கள் மற்றும் காப்பு பிரதி ஸ்கிரிப்ட்களின் GitHub சிக்கல்கள், மாற்றம் பல நிர்வாகிகளை ஆச்சரியத்தில் ஆழ்த்தியுள்ளது என்பதை தெளிவுபடுத்துகிறது. IMAP வழியாக PHP வழியாக oAuth2 உதவியுடன் உங்கள் Exchange அஞ்சல்பெட்டியின் உள்ளடக்கங்களை எவ்வாறு தொடர்ந்து அணுகலாம் என்பதை கீழே காண்பிப்போம்.


பாதுகாப்புக் கண்ணோட்டத்தில், மைக்ரோசாப்டின் நடவடிக்கை மிகவும் சரியானது, ஆனால் அதன் மின்னஞ்சல்களுக்கான நிரல் அணுகலின் சிக்கலானது சற்று அதிகரித்துள்ளது. எடுத்துக்காட்டாக, நீங்கள் பரவலாகப் பயன்படுத்தப்படும் barbushin/php-imap நூலகத்தைப் பயன்படுத்தினால், அணுகல் பின்வருமாறு இருக்கும்:

734a82898010e2fcb02c72c3cd9702c2

அது இனி வேலை செய்யாது. oAuth2 வழியாக இணைப்பை ஏற்படுத்த, அணுகல் டோக்கனைப் பெறுவது முதல் சிரமம். இதற்காக நீங்கள் இரண்டு தடைகளை எடுக்க வேண்டும்.

அசூர் ஆக்டிவ் டைரக்டரி

பின்வரும் படிகள் அசூர் ஆக்டிவ் டைரக்டரியில் புதிய பயன்பாட்டைப் பதிவுசெய்கின்றன:

https://portal.azure.com இல் உள்நுழைக
"அஸூர் ஆக்டிவ் டைரக்டரி"யைத் திறக்கவும்
"பயன்பாட்டு பதிவுகள்" & "புதிய பதிவு" என்பதைத் தேர்ந்தெடுக்கவும்.
"விண்ணப்ப ஐடி (வாடிக்கையாளர்)" (=வாடிக்கையாளர் ஐடி) & "டைரக்டரி ஐடி (குத்தகைதாரர்)" (=குத்தகைதாரர் ஐடி) நகலெடு.
"API அனுமதிகள்" & "அனுமதியைச் சேர்"
"எனது நிறுவனம் பயன்படுத்தும் APIகள்" & "Office 365 Exchange Online"
"விண்ணப்ப அனுமதிகள்" & "IMAP.AccessAsApp"
நிர்வாக சம்மதத்தை வழங்கவும்
"சான்றிதழ்கள் & ரகசியங்கள்" & "வாடிக்கையாளர் ரகசியங்கள்" & "புதிய வாடிக்கையாளர் ரகசியம்"
விளக்கத்தைத் தேர்ந்தெடுத்து செல்லுபடியை அமைக்கவும்
கிளிப்போர்டுக்கு "ரகசிய ஐடி" (வாடிக்கையாளர் ரகசியம்) நகலெடுக்கவும்
நிறுவன பயன்பாடுகளைத் திறக்கவும்
"ஆப்ஜெக்ட் ஐடி"யை நகலெடுக்கவும்.

பவர்ஷெல்

இப்போது பயன்பாட்டை உள்ளிடுவோம் மைக்ரோசாப்ட் பவர்ஷெல் (நிர்வாகி பயன்முறை) மற்றும் தனிப்பட்ட அஞ்சல் பெட்டிகளுக்கு அனுமதிகளை வழங்கவும் (<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 அதை செயல்பட வைக்க. இதற்கு பிறகு பதிவிறக்க Tamil மற்றும் நிறுவல் வழியாக python -m pip install -r requirements-no-gui.txt (பைதான் ≥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 வழக்கமான அடிப்படை அங்கீகாரம் (மற்றும் ஏதேனும் கடவுச்சொல் தொகுப்பு) வழியாக இணைக்கவும். நீங்கள் கணினியைத் தொடங்கும்போது பின்னணியில் ப்ராக்ஸியை ஒரு சேவையாகத் தொடங்க விரும்பினால், எடுத்துக்காட்டாக, நீங்கள் பயன்படுத்தலாம் systemd:

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
மீண்டும்