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

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


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

734a82898010e2fcb02c72c3cd9702c2

இனி அது அவ்வளவு எளிதல்ல. OAuth2 வழியாக ஒரு இணைப்பை ஏற்படுத்துவதற்கு, இப்போது முதலில் அணுகல் டோக்கனைப் (access token) பெற வேண்டியுள்ளது. இதற்கு இரண்டு தடைகளைக் கடக்க வேண்டியுள்ளது.

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

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

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

மின்னஞ்சல் அனுப்புதல்

மைக்ரோசாஃப்ட் எக்ஸ்சேஞ்ச் ஆன்லைன் வழியாக நிரல் ரீதியாக மின்னஞ்சல்களை அனுப்ப விரும்பும் எவரும் ஒரு அடிப்படை மாற்றத்தை எதிர்கொள்கின்றனர்: மைக்ரோசாப்ட் எக்ஸ்சேஞ்ச் ஆன்லைனில் SMTP க்கான கிளாசிக் பயனர்பெயர் மற்றும் கடவுச்சொல் அங்கீகாரத்தை முடக்கியுள்ளது. பல ஆண்டுகளாக ஒரு சில குறியீடு வரிகளால் நிறைவேற்றப்பட்டதற்கு இப்போது OAuth2 வழியாக மாற்றுப்பாதை தேவைப்படுகிறது - Azure Active Directory இல் பயன்பாட்டு பதிவு, சான்றிதழ்கள் மற்றும் டோக்கன் மேலாண்மை உட்பட. மின்னஞ்சல்களைப் பெறுவதோடு மட்டுமல்லாமல், அவற்றை அனுப்புவதற்கும் அதே அணுகுமுறையை நாங்கள் செயல்படுத்தலாம்.

"API அனுமதிகள்" & "அனுமதியைச் சேர்"
"எனது நிறுவனம் பயன்படுத்தும் APIகள்" & "Office 365 Exchange Online"
"பயன்பாட்டு அனுமதிகள்" & "SMTP.SendAsApp"
நிர்வாக சம்மதத்தை வழங்கவும்

மைக்ரோசாஃப்ட் எக்ஸ்சேஞ்ச் 365 வழியாக SMTP அனுப்புவது IMAP அணுகலின் அதே கொள்கையைப் பின்பற்றுகிறது: இங்கேயும், அடிப்படை அங்கீகாரம் முடக்கப்பட்டதால், oAuth2 ஐச் சுற்றிலும் எந்த வழியும் இல்லை. Azure பயன்பாட்டுப் பதிவில் "SMTP.SendAsApp" அனுமதியைச் சேர்த்து, நிர்வாகியின் ஒப்புதலை வழங்கிய பிறகு, அனுப்பலாம், எடுத்துக்காட்டாக PHPமெயிலர் இது செயல்படுத்தப்படுகிறது. முன்பு போல பயனர்பெயர் மற்றும் கடவுச்சொல்லை சமர்ப்பிப்பதற்கு பதிலாக, SMTP சேவையகத்திற்கு எதிரான அங்கீகாரம் இப்போது ஒரு அணுகல் டோக்கனைப் பயன்படுத்துகிறது. smtp.office365.com:

734a82898010e2fcb02c72c3cd9702c2

கூடுதல் அமைவு முயற்சி ஆரம்பத்தில் கடினமாகத் தோன்றலாம், ஆனால் நீண்ட காலத்திற்கு அது பலனளிக்கும்: OAuth2-அடிப்படையிலான அங்கீகாரம் கணிசமாக மிகவும் பாதுகாப்பானது, ஏனெனில் எந்த எளிய உரை கடவுச்சொற்களையும் உள்ளமைவு கோப்புகள் அல்லது ஸ்கிரிப்ட்களில் சேமிக்க வேண்டியதில்லை - மேலும் அணுகல் டோக்கனையும் நேர வரம்பிற்குட்படுத்தலாம் மற்றும் அதன் அனுமதிகளை துல்லியமான துல்லியத்துடன் கட்டுப்படுத்தலாம். மின்னஞ்சல்களைப் பெறுவதற்கும் அனுப்புவதற்கும் வசதியான API ஐ வழங்கும் மெயில்ஹெல்பர் நூலகத்தையும் இங்கே குறிப்பிடுவது மதிப்பு.

மீண்டும்