Breaking Changes

Skirbi · 4 yun 2025

Breaking Changes

Aktualisá Dovecot 2.3 pa 2.4 den Debian Stable

Siman pasá mi a topa ku problema inesperá durante un proseso di mantenimentu di rutina riba e infraestruktura di email di mi kompañia. Nos ta prosesá miles di email kada dia i nos ta usa Dovecot pa duna nos kliente akseso na nan mensahe. Tur kos a para di repente ora mi a aktualisá pa vershon 2.4, ku tin breaking changes... ai ai ai!

⚠️ TL;DR: Aktualisá Dovecot 2.3 → 2.4 riba Debian

  • Dovecot 2.4 ta introdusí breaking changes: Archivonan di konfigurashon di 2.3 no ta kompatibel. E software no ta start sino bo skirbi nan di nobo.
  • Sintaksis nobo di konfigurashon i sistema di variabel: Parámetronan manera `ssl_cert`, `mail_location`, i `%d` a kambia di formato i di sentido.
  • No tin kaminda outomátiko di migrashon: Ta nesesario revisá i skirbi konfigurashon manualmente, spesialmente si bo ta usa backend di SQL, Sieve, òf auth personalisá.
  • Rekomendashon: Lesa e official upgrade guide bon promé ku aktualisá, i prueba konfigurashon den isolashon.

Un paseo den parke

Pendiente algun aktualisashon di siguridat i pa resolvé algun problema di kompatibilidat, mi a tuma e desishon di aktualisá algun pakete riba un server di Debian GNU/Linux ku ta responsabel pa e servisionan di email di mi kompañia. E distribushon aki di GNU/Linux ta konosí pa su estabilidat i konfiabilidat. No tabatin motibu pa spera problema i mi a kuminsá e aktualisashon ku e spera di terminá den solamente minutonan. Djis "un paseo den parke", kiko por bai robes..?

Rekerí 'dovecot_config_version'

Mayoria di e server a bin bèk online manera mi tabata spera kasi na e momento, ku a interumpi e servisionan asina poko ku hasta e uptime monitor alarm no a nota ningun interupshon, eksepto pa Dovecot. E tipo di software aki ta responsabel pa akseso di IMAP i POP3 na e buzonnan. E ta enkahá manera un rodia dentá afiná den un konfigurashon mas grandi, kaminda otro programanan manera Postfix ta konta riba su funshonamentu pa risibí email. Dovecot no por a start i esei a kousa un serie di problema.

E promé kos ku bo ta hasi komo administrador di server ta chèk e daemonnan di server ('systemctl status dovecot') i despues inspekshoná e logs, por ehèmpel pa kore 'journalctl -u dovecot'. Esei a revelá rápido ku Dovecot a nenga di start pasobra tabata falta un parámetro di konfigurashon: 'dovecot_config_version'.

Simplemente agregá e parámetro na e konfigurashon na '/etc/dovecot/dovecot.conf' bo ta pensa? Bon... NÒ. Ta resultá ku e kreadónan di Dovecot a pone e eror ei pa un bon motibu: e vershon nobo 2.4 di Dovecot no ta kompatibel ku e archivonan di konfigurashon anterior di 2.3; esei ta nifiká ku bo mester skirbi di nobo hopi parámetro diferente. No ta solamente e nòmbernan di variabel di konfigurashon, e ta introdusí tambe un sintaksis kompletamente nobo pa ekspansion di variabel di konfigurashon. Un balor di variabel bieu manera '%d' awor ta bira '%{user | domain}'. E lista di kambionan ta largu i no tin manera outomátiko pa migrá bo konfigurashon. Imaginá mi kara ora mi a realisá e magnitut di mi problema.

Kompleksidat Integrá: rodia dentá den un makina

Loke ta pasa ku servisionan di email ta ku nan ta difísil. No pasobra un solo komponente ta difísil, ma pasobra pa kore un stack kompleto di email bo mester hopi diferente parti ku ta traha huntu sin problema. Aki tin algun di e pedasnan ku ta forma e servisio di email di mi kompañia:

  • Postfix: E MTA (mail transfer agent) di SMTP prinsipal, ku ta komunikà ku otro server di email pa risibí i manda email. E mester sa kua adres di email ta válido pa risibí email i ken ta outorisá pa manda mensahe nobo.
  • Filtro Amavis: Tur email ku e server ta prosesá ta pasa dor di e mekanismo di filtrashon amavis ku ta chèk mensahe individual usando SpamAssissin i ClamAV.
  • SpamAssasin: Usando un set kompleho di reglanan i análisis bayesiano, mensahenan ta wòrdu skana outomátikamente pa probabilidat di ta spam.
  • ClamAV: Mensahenan ta wòrdu skana pa viru. Anekso ta wòrdu ekstraé i analisá, archivo pa archivo.
  • Blacklist di DNS reverso: Adishonal na skana e mensahenan, e server di email tambe ta hasi un chèk di antesedente riba server eksterno ku e ta komunikà ku nan. Headernan di email ta wòrdu parse i hopnan individual ta wòrdu chèk pa nan reputashon.
  • OpenDKIM: Algun mensahe ta kontené un firma di 'domain key', ku ta pròf ku nan remitente ta outorisá. Mensahenan ku header ta wòrdu chèk, miéntras otronan ta wòrdu firma usando un servisio di milter konektá ku Postfix.
  • Sieve: Mensahenan ku ta drenta ta wòrdu sortiá outomátikamente usando reglanan pa usuario, por ehèmpel pa entregá sierto mensahe den mapanan spesífiko. E mester sa kua reglanan ta aplikabel na kua adres.
  • MariaDB / MySQL: E adresnan di email, login válido, nòmber di usuario, hash di password i alias ta wòrdu warda den un database sentralisá. Konsultanan spesífiko di SQL ta wòrdu konfigurá pa chèk kosnan manera "e password aki ta válido?"
  • Nginx: E server di email tin tambe un server di web ku ta permití manehá kuenta i duna akseso na email via webmail.
  • NodeJS: E konsola di manehu ta usa un backend di NodeJS pa permití administradónan di server i kliente konfigurá nan adres i password.
  • Roundcube: E server ta usa un programa di webmail masha usá pa permití kliente akseso nan email via e browser.
  • PHP: E webmail ta nesesitá PHP pa kore, inkluí algun dependensia pa laga e papia ku Dovecot (via IMAP) i MariaDB (via SQL).
  • Dovecot: Despues tin Dovecot, e pida di software real ku ta permití usuarionan final akseso nan email. E ta permití usuario outentiká akseso na e email ku ta warda riba e diskonan di e infraestruktura usando protokol manera IMAP òf POP3.
Un stack kompleto di mail server ta konsistí di hopi komponente mas chikí afiná huntu
Un stack kompleto di mail server ta konsistí di hopi komponente mas chikí afiná huntu

E pedasnan aki ta afiná perfektamente riba otro, manera rodianan dentá den un makina kompleho, nan ta enkahá eksaktamente. Nan konfigurashon ta traha na medida pa nan rol spesífiko, i hopi bes nan ta konektá ku vários otro pida. Bo por imaginá ku un kambio inesperá den un di e rodianan dentá aki (manera Dovecot) por kousa hopi disrupshon!

No tabatin ningun solushon rápido disponibel, ningun aktualisashon outomátiko di konfigurashon. Dado ku e aktualisashon aki ta relativamente nobo, mayoria di modelo grandi di lenguahe (AI) tampoko no tabatin un repuesta. ChatGPT a djis jenerá sugerensia basá riba e dokumentashon bieu di 2.3. Pa resolvé e problema mi a mester apliká 'kapasidatnan di server Linux di skol bieu': kreá manualmente un konfigurashon nobo ahustá pa Dovecot 2.4.

Para pa Prevení Pèrdida di Data

Tan pronto ku mi a komprondé e naturalesa di e problema, mi a para mayoria di e servisionan di email inmediatamente (por ehèmpel para e motor kompletamente). Esaki ta prevení pèrdida di data, pasobra email no ta wòrdu prosesá mas. Esaki ta hasi ku otro server di email ta pone email den kolá, i a bèses ta emití eror di SMTP 4xx (manera 421, 451, 454 òf 455). E desèño di e protokòl di email mundial ta akomodá interupshon temporal i otro server lo purba di nobo mas lat.

Skirbi e konfigurashon di nobo dor di RTFM

E mensahe di eror den e logs a gia mi bai na e official Dovecot docs, i ei tabata: un WARNING markerá ku amarilo ku ta deskribí e kambionan di konfigurashon. Ta un dokumento largu: komo PDF e ta konta 18 página. Un dia normal e lo tuma algun esfuerso pa pasa dor di dje. Imaginá mester hasi esaki miéntras e kas ta kema, manera ta bisa!

E konfigurashon di Dovecot ta konsistí di vários archivo ku tur ta konfigurá parti di e komportashon di e software. Manera kon outentikashon ta hasi, òf kon e ta integrá ku un filtro di Sieve, òf unda e ta haña e nòmber di usuario i hash di password pa login. E kambionan introdusí na Dovecot 2.4 ta afektá kasi tur e parámetronan, pasobra e kreadónan a introdusí un sintaksis nobo pa variabel di server.

Sintaksis di notashon di variabel

Anteriormente e konfigurashon tabata usa notashon di variabel manera '%u' komo markador di lugá pa un nòmber di usuario. E sintaksis nobo ta permití ku variabel wòrdu pipá na un modifikador, ku ta permití normalisashon i kosnan manera selekshon di sub-string. Por ehèmpel: pa haña un dominio di email for di un nòmber di usuario bo no ta usa '%d' mas ma bo ta usa e variabel 'user' komo base pa pipé e pa e modifikador di dominio usando e sintaksis aki: '%{user | domain}'.

Tan pronto ku mi a komprondé e lenguahe nobo aki, mi a apresiá di verdat e obra di arte ku e ta implicá. E ta un mehoramentu riba e nòmbernan abreviá bieu di variabel, pasobra bo no tin mester di un diksionario mas pa buska kosnan: na lugá di algu vago manera '%r' awor bo ta lesa '%{remove_ip}'. E ta inherentemente mas lesabel, algu ku mi ta balorá hopi.

Enkripshon: 'ssl_cert' ta bira 'ssl_server_cert_file'

Otro kambionan ta inkluí e manera ku e konfigurashon ta apuntá na archivonan eksterno usá pa enkripshon. Anteriormente bo tabatin un setting 'ssl_cert' ku por a kontené e sertifikado real di SSL/TLS komo string. Den vershon 2.4 bo tin e variabel 'ssl_server_cert_file' ku ta tuma un path ku ta apuntá na e sertifikado riba e sistema di archivo. No ta solamente kambia di nòmber, e naturalesa di e balor ta nobo tambe! Pa reparar e konfigurashon, bo mester pasa dor di kada un di e parámetronan aktualisá aki i determiná nan impakto riba bo setup partikular. E ta tuma tempu i e ta propenso na error.

Dividi e setting 'mail_location'

Nobo na 2.4 ta kon 'mail_location' ta wòrdu dividí den vários variabel mas chikí. Anteriormente un solo variabel tabata define unda email tabata wòrdu warda riba disko. Awor bo mester dividi esaki den dos variabel 'mail_driver' i 'mail_path', I usa e sintaksis nobo di variabel di server. Si bo hasi un di esakinan robes, tur email lo disparsé (kere mi!). Dependiendo di bo konfigurashon spesífiko di almasenahe, bo lo ke chèk dos bes e parti di nòmber di usuario (por ehèmpel bo ta inkluí e adres di email kompleto òf solamente e prefijo sin e nòmber di dominio?).

Migrá mail_location pa mail_driver i mail_path usando e sintaksis nobo di variabel di server
Migrá mail_location pa mail_driver i mail_path usando e sintaksis nobo di variabel di server

Dovecot ku backend di SQL: passdb i userdb

Si bo instalashon di Dovecot ta traha ku un database eksterno (òf store) pa outentikà nòmbernan di usuario i password, bo mester skirbi di nobo e 'auth-sql.conf.ext' den '/etc/dovecot/conf.d/' ku ta wòrdu yamá/inkluí pa e archivo 10-auth.conf. Den Dovecot 2.4 tin un manera nobo di segmentá e settingnan di passdb i userdb. Den e setup di Dovecot 2.3 mi a usa un archivo eksterno pa duna e konsultanan di database i e string di konekshon. Durante outentikashon e konsultanan múltiple ta wòrdu usá pa 1) outentikà usuarionan, i 2) karga settingnan spesífiko di usuario manera e path di e almasen di email.

E instrukshonnan di aktualisashon di userdb i passdb ta masha útil na promé vista /s
E instrukshonnan di aktualisashon di userdb i passdb ta masha útil na promé vista /s
Setup di backend SQL di Dovecot 2.3 (auth-sql.conf.ext i dovecot-sql.conf.ext)
Setup di backend SQL di Dovecot 2.3 (auth-sql.conf.ext i dovecot-sql.conf.ext)

Den e vershon nobo 2.4 bo mester restrukturá e parámetronan pa wòrdu enkerá den seshonnan ku ta inkluí un indikador di tipo di backend tras di e palabranan klave 'userdb' i 'passdb' den e konfigurashon. Pues, si bo ta usa un database MySQL komo backend, bo ta nesesitá 'userdb' ta bira 'userdb sql'. Bo por inkluí e parámetronan di e string di konekshon mesun den e archivo 'auth-sql.conf.ext' pa tur parámetro relevante ta den un archivo di konfigurashon. Pa redusí kompleksidat mi a skirbi di nobo e seshon di userdb pa usa e driver di database 'static': generando variabel di konfigurashon manera e path di email di e usuario basá riba e nòmber di usuario. Wak e dedicated documents.

Setup di backend SQL di Dovecot 2.4 (auth-sql.conf.ext), awor hopi mas kompakto ku su antesesor. Awor tin solamente un konsulta SQL pasobra e seshon di userdb awor ta usa e backend static
Setup di backend SQL di Dovecot 2.4 (auth-sql.conf.ext), awor hopi mas kompakto ku su antesesor. Awor tin solamente un konsulta SQL pasobra e seshon di userdb awor ta usa e backend static

Plugin di Sieve

Si bo setup ta usa Sieve pa sortia email ku ta drenta, bo mester ahustá bo setup tokante e lokalisashon di e script, su default i komportashon. E vershon nobo di Dovecot 2.4 ta introdusí un konsepto yamá "Script Storage" ku ta permití ku scripts karga dinámikamente wòrdu ehekutá pa diferente usuario na vários evento. Nos setup ta inkluí un script simpel di sieve default ku ta sortia outomátikamente email markerá komo spam pa un mapa yamá Spam. E sintaksis nobo ta permití un konfigurashon mas kompakto:

Konfigurashon di Sieve den Dovecot 2.3 (90-sieve.conf) ku variabel awor obsoleto sieve_default i sieve_dir
Konfigurashon di Sieve den Dovecot 2.3 (90-sieve.conf) ku variabel awor obsoleto sieve_default i sieve_dir
Konfigurashon di Sieve den Dovecot 2.4 (90-sieve.conf)
Konfigurashon di Sieve den Dovecot 2.4 (90-sieve.conf)

Prueba e Konfigurashon Nobo

Bo por ta tentá pa simplemente start e server di nobo despues di redefiní e konfigurashon 2.4. Pero bo mester tene hopi kuidou, pasobra un konfigurashon robes por hasi ku kliente pèrdè akseso na tur email i/òf forsa nan pa download nan buzón kompleto di nobo. Na lugá di esei mi a skohe un aserkamentu gradual kaminda mi a kambia e números di port di IMAP (i POP3) pa algu arbitrario. Di e manera aki mi por a prueba e setup nobo mi so, miéntras mi tabata tene e kliente real leu di konektá ku e server. Esaki a permití mi reparar algun eror di tipo, refiná un poko di e sintaksis nobo di variabel di server i trata ku algun mensahe raro den e log. Bo por kontrolá e números di port di e server for di e archivo '10-master.conf'.

Konfigurá e números di IMAP i POP di e server pa permití debugging privá/gradual di e konfigurashon nobo
Konfigurá e números di IMAP i POP di e server pa permití debugging privá/gradual di e konfigurashon nobo

Konklushon

Interupshon manera esaki ta raro, danki na e estabilidat di Debian GNU/Linux, ma no ta imposibel. Backups diario i un plan di recuperashon di desastre prueba ta na lugá pa e servisio di email Lemmid Online di mi kompañia. Aunke e biaha aki no tabata nesesario un failover kompleto, ehersisio anterior a pruba ta krusial pa ahustá e konfigurashon rápido.

E insidente aki tabata un rekordatorio ku hasta ku outomatisashon i AI, konosementu profundo di sistema, preparashon, i debugging manual ta keda enstrumento esensial ora komponente krítiko di infraestruktura kambia inesperadamente i sin kaminda outomátiko di migrashon.

Konfigurashon di Ehèmpel pa Dovecot 2.4

Si bo ta haña e artíkulo aki buskando un solushon pa bo mes server di email kibrá, bo por haña e archivonan di konfigurashon di ehèmpel aki pa Dovecot 2.4 útil. Mi a haña nan durante mi mes trabou di reparashon i nan por spar bo algun tempu pa komprondé e sintaksis nobo: https://source.willem.com/dovecot-2.4-sample-config/

← Mas artíkulo