Accessum cum PHP ad Exchange / officium CCCLXV

Longa nuntiata - nunc res : Microsoft authenticas per tesseram commutavit pro quibusdam protocollis in Exchange Online a Septembri 2022 in favorem oAuth2. Quaestiones GitHub plurium bibliothecarum et scriptorum tergum scriptorum declarant mutationem rerum multos administratores prehendisse ex improviso. Infra ostendemus quomodo pergere potes ad contenta per mailbox permutationis tuae accedere ope oAuth2 per PHP per IMAP.


Ex parte securitatis, motus Microsoft valde emendatus est, sed intricatio programmatum accessus ad electronicas suas aliquantum auxit. Exempli gratia, si barbushin/php-imap bibliotheca late usus uteris, aditus talis erit:

734a82898010e2fcb02c72c3cd9702c2

Hoc modo non operatur amplius. Ad nexum per oAuth2 constituendum, prima difficultas est accessus ad tesseram perveniendi. Quam ob rem duplex opus est crates.

Caeruleus Active Directory

Sequentes gradus subcriptio novum app in Azure Active Directory:

Login to https://portal.azure.com
Aperi "Azure Active Directory"
Lego "App registrations" & "Novam adnotationem".
Exemplar "Application ID (Client)" (= Client ID) & "Directory ID (Tenant)" (= Tenant ID).
"API Permissionibus" & "Permissionibus addere"
"APIs usus est in mea ordinatione" & "officium 365 Exchange Online"
"Applicationem Permissionibus" & "IMAP.AccessAsApp"
Praesta admin consensu
"Certificationes & Secreta" & "Client Secretorum" & "Novi Client Secret"
Elige genus et validitatem
Effingo "Secretum ID" (Client Secret) ad clipboard
Apertum inceptum applicationes
Effingo "Object ID".

PowerShell

Nunc convertamus app in Microsoft PowerShell (modus administratoris) et permissiones singulis mailboxes assignare (<TENANTID>, <CLIENTID>, <OBJECTID>, <EMAIL> oportet utrobique):

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
...

Cum feceris quod, cetera scientia erucae non est. Cum barbushin/php-imap oAuth2 non sustinet, coniungere cum altero bibliothecae Webklex/php-imap potes (quod etiam commodum habet moduli PHP IMAP non requirendi).:

734a82898010e2fcb02c72c3cd9702c2

Sed bibliothecae quae oAuth2 publice non sustinent adhiberi possunt etiam per procuratorem ut . simonrob/email-oauth2-proxy habilem facere. Post haec Download et institutionem via python -m pip install -r requirements-no-gui.txt (Python ≥3.6 requiritur) tabella es emailproxy.config exempli causa (reposito hoc tempore <TENANTID>, <CLIENTID>, <CLIENTSECRET> et <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>

Tum satus procuratorem cum python emailproxy.py --no-gui et nunc potest ire ad IP unencrypted localhost in portum 1993 connect via regularis Basic Auth (and any password set). Si vis procuratorem incipere ut officium in curriculo cum systema incipias, uti potes, e.g 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

Si nexus encrypted exigitur, hoc quoque fieri potest - hoc enim primum clavem privatam et libellum auto-signatum creas.:

openssl genrsa -out key.pem 3072
openssl req -new -x509 -key key.pem -out cert.pem -days 360

Deinde referendum est in emailproxy.config Hi duo files:

local_key_path = /path/to/key.pem
local_certificate_path = /path/to/cert.pem

Mittens epistulas electronicas

Quicumque epistulas electronicas programmatice per Microsoft Exchange Online mittere vult, mutationem fundamentalem quoque patitur: Microsoft authenticationem classicam usoris et tesserae pro SMTP in Exchange Online inactivavit. Quod paucis tantum lineis codicis per annos perfectum est, nunc deviationem per OAuth2 requirit – inter quas registratio applicationis in Azure Active Directory, certificata, et administratio tesserarum. Eandem rationem ad epistulas electronicas mittendas, praeterquam ad eas recipiendas, adhibere possumus.

"API Permissionibus" & "Permissionibus addere"
"APIs usus est in mea ordinatione" & "officium 365 Exchange Online"
"Permissiones applicationum" et "SMTP.SendAsApp"
Praesta admin consensu

Missio SMTP per Microsoft Exchange 365 idem principium sequitur ac accessus IMAP: Post deactivationem Authenticationis Basicae, nulla alternativa est ad OAuth2. Post additionem permissionis "SMTP.SendAsApp" in registratione applicationis Azure et concessionem administratoris, mittio fieri potest, exempli gratia, cum... PHPMailer Hoc iam implementatum est. Loco simpliciter nomen usoris et tesserae submittendae ut antea, authenticatio contra servum SMTP nunc tessera accessus utitur. smtp.office365.com:

734a82898010e2fcb02c72c3cd9702c2

Opus institutionis additum initio formidabile videri potest, sed longo spatio prodest: authenticatio OAuth2 fundata multo securior est, cum nullae tesserae planae in fasciculis configurationis vel scriptis servandae sint – et tessera accessus etiam tempore limitari potest eiusque permissiones cum grana praecisione regi. Etiam hic mentione digna est bibliotheca mailhelper , quae API commodam ad epistulas electronicas recipiendas et mittendas offert.

Back