Aighneacht SMTP Python: STARTTLS ar 587 nó TLS ar 465?
Iompraíonn STARTTLS ar 587 agus TLS intuigthe ar 465 an aighneacht Python araon, ach ní oireann ach ceann amháin dá bhfuil ag d’athsheoltóir. Déan comparáid idir an crann lámh agus na modhanna teipe.
Iompraíonn an dá mhód nasctha an teachtaireacht chéanna chuig an gcuntas athsheoltóra céanna, agus is é an difríocht ná cá dtosaíonn TLS, ní cad a sheoltar. Osclaíonn ceann amháin i dtéacs soiléir agus uasghrádaítear laistigh den chanáil é; tá an ceann eile criptithe ón gcéad bheart. Cinneann an difríocht amháin sin cad a nglacfaidh beartas athsheoltóra dian leis, cad is féidir le feiste idirmheánach a fheiceáil, agus cén teachtaireacht earráide a chaithfidh tú tráthnóna á léamh. Seo mar a roghnaím eatarthu nuair a thugann feidhmchlár ar líonra príobháideach teachtaireacht do sheirbhís aighneachta inmheánach.
Cá ndealaíonn an dá mhód ó chéile i ndáiríre
Tá an tasc mar an gcéanna sa dá chás: fíordheimhnigh mar chuntas faofa, ainmnigh seoltóir ceadaithe, liostaigh faighteoirí, agus fan go nglacfaidh an t-athsheoltóir freagracht. Is é an rud a athraíonn ná ord na n-oibríochtaí. Tosaíonn port 587 mar sheisiún SMTP i dtéacs soiléir, fógraíonn sé STARTTLS ina fhreagra EHLO, agus ní dhéantar uasghrádú air ach amháin má iarrann an cliant é. Measann port 465 crann lámh TLS sula ndeirtear aon ordú SMTP.
Is poist éagsúla iad aighneacht agus athsheoladh, agus is é sin an fáth nach nósanna idirmhalartacha iad na huimhreacha poirt. Déanann RFC 6409 cur síos ar aighneacht teachtaireachtaí mar sheirbhís dá cuid féin, agus clúdaíonn RFC 8314 an leagan TLS intuigthe a nochtann formhór na n-athsheoltóirí nua-aimseartha ar 465. Má dhéanann d’athsheoltóir doiciméadú ar cheann den dá rud, tá an doiciméadú sin níos tábhachtaí ná aon rogha a fuair tú ó fhostóir roimhe seo.
Cad a thugann STARTTLS ar 587 duit
Tarlaíonn an t-uasghrádú laistigh den chomhrá SMTP, mar sin is féidir leis an athsheoltóir é a fhógairt agus is féidir leis an gcliant diúltú leanúint gan é. I Python, caitheann starttls() eisceacht nuair nach dtairgeann an freastalaí an síneadh, rud a iompaíonn iarracht ar íosghrádú ina theip infheicthe seachas logáil isteach ciúin i dtéacs soiléir. Is é an t-iompar sin an phríomhargóint ar son an mhóid, agus is fiú brath air d’aon ghnó seachas de thimpiste.
Tá an fhuinneog nochta beag ach fíor: tá an chéad mhalartú EHLO inléite, agus ní iompraíonn aon rud roimh an uasghrádú dintiúirí. Ar chosán príobháideach idir foshlíonra feidhmchláir agus athsheoltóir inmheánach, is gnách go mbíonn an fhuinneog sin inghlactha. Ar chosán nach rialaíonn tú, is é sin an fáth a ngeallann roinnt foirne ar an mód eile.
Táirgeann feiste idircheaptha a bhaineann an cumas STARTTLS as aighneacht theipte, ní cúlú. Sin an toradh a theastaíonn uait, agus is é freisin an bealach is tapúla chun a fháil amach go bhfuil rud éigin ag athscríobh SMTP ar an gcosán.
Cad a athraíonn TLS intuigthe ar 465
Níl aon chéim téacs soiléir ann ar chor ar bith. Déanann an cliant crann lámh TLS a luaithe a osclaítear an soicéad, bailíochtaíonn sé an deimhniú in aghaidh a stórais iontaoibhe, agus ní mhalartaíonn sé EHLO, AUTH agus an teachtaireacht go dtí sin. Ní féidir le haon rud an seisiún a íosghrádú toisc nach bhfuil aon staid téacs soiléir ann le caibidil a dhéanamh, agus baineann sé sin aicme iomlán de theipeanna idircheaptha amach.
Is é an trádáil ná inléiritheacht. Athsheoltóir a fhreagraíonn ar 465 le SMTP téacs soiléir, nó cothromóir ualaigh a chríochnaíonn TLS leis an ainm deimhnithe mícheart, teipeann sé ag an crann lámh agus tugann sé earráid SSL duit seachas earráid phoist. Nuair a tharlaíonn sé sin, tá an fhadhb faoi bhun an fheidhmchláir, agus ní dheiseoidh aon mhéid tógála teachtaireachta í.
Aon fheidhm aighneachta amháin, dhá iompróir
Is ar éigean a bhíonn an cód difriúil idir na móid, agus is é sin an fáth ar cheart an rogha a dhéanamh ó bheartas an athsheoltóra seachas ó áisiúlacht na leabharlainne. Easpórtáil na socruithe ar dtús, ansin rith script amháin a roghnaíonn an t-iompróir ón bport cumraithe.
export SMTP_HOST=smtp.relay.internal export SMTP_PORT=587 export SMTP_USER=svc-notify export [email protected] export [email protected] export SMTP_PASSWORD="$(cat /run/secrets/smtp_password)"
import os, smtplib, ssl
from email.message import EmailMessage
ctx = ssl.create_default_context()
msg = EmailMessage()
msg["From"] = os.environ["MAIL_FROM"]
msg["To"] = os.environ["MAIL_TEST_TO"]
msg["Subject"] = "relay submission test"
msg.set_content("One authorized test message from the app.")
host = os.environ["SMTP_HOST"]
port = int(os.environ.get("SMTP_PORT", "587"))
if port == 465:
client = smtplib.SMTP_SSL(host, port, context=ctx, timeout=15)
else:
client = smtplib.SMTP(host, port, timeout=15)
client.ehlo()
client.starttls(context=ctx)
client.ehlo()
with client:
client.login(os.environ["SMTP_USER"], os.environ["SMTP_PASSWORD"])
refused = client.send_message(msg)
print("refused:", refused)
Fíoraíonn create_default_context() an slabhra agus an t-ainm óstaigh, mar sin caithfear CA príobháideach a shuiteáil sa stóras iontaoibhe seachas é a sheachaint le comhthéacs neamhfhíoraithe. Filleann send_message() foclóir de na faighteoirí ar dhiúltaigh an t-athsheoltóir dóibh; ciallaíonn foclóir folamh gur ghlac sé leo go léir. Is pointe tosaigh é an t-am istigh de chúig shoicind déag, ní luach tiúnta do do líonra.
Coinnigh an focal faire as an íomhá agus as na logaí. Tá rún a shuiteáiltear ag am rite agus a léitear isteach sa timpeallacht ceart go leor; ní ceart an timpeallacht a mhacallt i líne loga, ná rian dífhabhtaithe den mhalartú AUTH ach an oiread.
Roghnaigh de réir beartas agus cosán an athsheoltóra, ní de réir nós
Réitíonn trí choinníoll é. Ar dtús, cad a fhógraíonn an t-athsheoltóir i ndáiríre: ní féidir seirbhís nach n-éisteann ach ar 587 le STARTTLS a shroicheadh ar 465, is cuma cé chomh mór is a thaitníonn TLS intuigthe leat. Ar an dara dul síos, an bhfuil an cosán idir an feidhmchlár agus an t-athsheoltóir iontaofa go leor chun malartú EHLO inléite a ghlacadh. Ar an tríú dul síos, an bhfuil rud éigin sa lár ag athscríobh nó ag seachbhóthú SMTP, mar sin a shocraíonn cé acu atá an riosca íosghrádaithe teoiriciúil nó beo.
Nuair a thairgeann an t-athsheoltóir an dá rud, tógaim 465 do sheirbhís a ritheann gan mhaoirseacht agus 587 do cheann ina mbíonn duine ag faire ar an gcéad imscaradh, díreach mar go dtagraíonn na teachtaireachtaí teipe do shraitheanna éagsúla. Is liomsa an rogha sin agus ní beartas í.
Cibé rud a roghnaíonn tú, taifead an port, an t-ábhar iontaoibhe agus fearann an tseoltóra in éineacht leis an imscaradh. Ansin seol teachtaireacht tástála amháin údaraithe agus deimhnigh gur ghlac an t-athsheoltóir léi, ag coinneáil thoradh na haighneachta agus aon tuarascáil seachadta níos déanaí mar thaifid ar leith. Is é aistriú rathúil chuig an athsheoltóir deireadh fhreagracht an fheidhmchláir, ní cruthúnas gur shroich an teachtaireacht bosca isteach.