Krijo një rregull
Kushtet në njërën anë, veprimet në tjetrën. I aktivizuar, përveçse kur thoni ndryshe.
Ekzekuton thirrjen reale kundrejt hapësirës suaj të punës, me çelësin tuaj.
POST /rules
Kushtet në njërën anë, veprimet në tjetrën. I aktivizuar, përveçse kur thoni ndryshe.
Shembull
Kërkon rules:write. Kthen 201. position nuk pranohet. Një rregull i ri i shtohet fundit të listës, dhe zhvendosja e tij bëhet me POST /rules/reorder.
curl -X POST "$OE/rules" -H "$AUTH" -H "Content-Type: application/json" \ -d '{ "name": "Receipts to their own label", "match": "all", "conditions": [ { "field": "from_domain", "op": "matches", "value": "*.stripe.com" }, { "field": "subject", "op": "contains", "value": "receipt" } ], "actions": [ { "type": "label", "value": "USER_RECEIPTS" }, { "type": "archive" } ], "stopProcessing": true }'{ "object": "rule", "id": "rul_7f3a1c94e05d3862c1f0a44b", "name": "Receipts to their own label", "description": null, "enabled": true, "position": 3, "match": "all", "conditions": [ { "field": "from_domain", "op": "matches", "value": "*.stripe.com", "negate": false }, { "field": "subject", "op": "contains", "value": "receipt", "negate": false } ], "actions": [ { "type": "label", "value": "USER_RECEIPTS" }, { "type": "archive" } ], "stopProcessing": true, "lastMatchedAt": null, "matchCount": 0, "createdAt": "2026-08-30T10:41:02.000Z", "updatedAt": "2026-08-30T10:41:02.000Z"}Një rregull i krijuar këtu është AKTIV dhe fillon të veprojë te mesazhi i radhës. Kjo është parazgjedhja e duhur për një thirrje që dikush e bëri me qëllim, dhe është e kundërta e mjetit MCP createRule, i cili e shkruan të njëjtin rregull TË ÇAKTIVIZUAR, sepse një model që vendos të arkivojë postë nuk duhet ta ketë nisur arkivimin përpara se një person ta ketë lexuar rregullin.
Një name i dyfishtë në të njëjtin connection është rule_name_taken, një 409. Emrat janë mënyra si njihet një rregull në një regjistër ekzekutimesh dhe në ekranin e cilësimeve, prandaj dy rregulla të quajtura "Newsletters" janë një raport që nuk e lexon dot askush.
Rregulli i 101-të është rule_limit_reached, një 422. Tavani është mbrojtje kundër një skripti në cikël, jo kufi kontabël, dhe nuk është i mbyllur me bllokim. Dy krijime që garojnë te 99 mund të kalojnë të dyja.
Çfarë mund të pyesë një kusht
Një kusht është { field, op, value }, me një header opsional që emërton se cili header lexohet dhe një negate opsional. value është GJITHMONË varg në rrjet. Fushat numerike krahasohen si numra pas Number(value), dhe dy fushat boolean marrin vargjet literale "true" dhe "false", sepse një fushë me një tip të vetëm është një skemë që një gjenerator OpenAPI mund ta përshkruajë, ndërsa një bashkim i tre tipave jo.
| Fusha | Lexon | Operatorët |
|---|---|---|
| `from` | Headeri From:, i normalizuar ashtu si e normalizon lista e bllokimit. | text |
| `from_domain` | Domeni i From: dhe PRINDËRIT e tij, deri në dy etiketa: një mesazh nga mail.corp.example.com përputhet edhe me corp.example.com edhe me example.com, dhe nuk përputhet me asgjë për com. | text |
| `envelope_from` | MAIL FROM i SMTP-së. I ndryshëm nga from në çdo listë postare, dhe i vetmi identitet kundrejt të cilit mund të shkruhet një reject. | text |
| `to`, `cc`, `bcc` | Cilado adresë në atë header. | text |
| `recipient` | Cilado adresë në to, cc ose bcc: shkurtorja për të tria. | text |
| `reply_to` | Headeri Reply-To. | text |
| `delivered_to` | Adresa kanonike te e cila u dorëzua kjo kopje, me tag-un plus të hequr dhe me shkronja të vogla, që është mënyra si përputhet një alias catch-all. | text |
| `subject` | Rreshti i subjektit ashtu si mbërriti. | text |
| `body` | Pjesa tekst, ose HTML-ja e reduktuar në tekst. Me tavan, që një trup prej 20 MB të mos skanohet i tëri. | text |
| `header` | Çdo header, i emërtuar në fushën header të vetë kushtit. I detyrueshëm aty dhe i kthyer në shkronja të vogla përpara krahasimit. | text |
| `list_id` | Headeri List-Id: emri me të cilin identifikohet vetë një listë postare. | text |
| `attachment_name` | Emri i skedarit i çdo bashkëngjitjeje. | text |
| `attachment_type` | Tipi MIME i çdo bashkëngjitjeje, p.sh. application/pdf. | text |
| `has_attachment` | Nëse ka fare ndonjë. | equals "true" / "false" |
| `spam` | Verdikti i spam-it të cilin arriti rruga e dorëzimit, përpara se të vepronin rregullat tuaja. | equals "true" / "false" |
| `attachment_size` | Madhësia e një bashkëngjitjeje në bajt. Një krahasim përputhet kur e plotëson qoftë edhe një bashkëngjitje e vetme. | gt, lt, equals |
| `message_size` | I gjithë mesazhi në rrjet, në bajt. | gt, lt, equals |
| `hour` | Ora e mbërritjes, 0–23, UTC. | gt, lt, equals |
| `weekday` | Dita e mbërritjes, 0–6, e diela është 0, UTC. | gt, lt, equals |
| Operatori | Çfarë bën |
|---|---|
| `matches` | Një glob, dhe vetëm një glob: * për çdo varg karakteresh, ? për një të vetëm. Pa shprehje të rregullta. Një model nga një klient API ekzekutohet në rrugën e dorëzimit, dhe një model me backtracking katastrofik atje është një kuti postare që ndalon së marri postë. |
| `contains` | Nënvarg, pa dallim shkronjash të mëdha e të vogla. |
| `equals` | E gjithë vlera, pa dallim shkronjash të mëdha e të vogla. Në një fushë numerike, barazi numerike. |
| `starts_with` | Prefiks, pa dallim shkronjash të mëdha e të vogla. |
| `ends_with` | Sufiks, pa dallim shkronjash të mëdha e të vogla. |
| `gt`, `lt` | Numerik, vetëm në katër fushat numerike. Një fushë teksti me gt nuk përputhet kurrë. |
Një model matches duhet të mbartë të paktën dy karaktere alfanumerike të vetat, i njëjti prag që zbaton lista e bllokimit. Një * i zhveshur refuzohet në kohën e shkrimit, në vend që të pranohet e më pas të përputhet pa zhurmë me çdo mesazh që do të mbërrijë ndonjëherë, gjë që është ndërprerje shërbimi, jo rregull.
Një kusht të cilit motori nuk mund t'i përgjigjet (një fushë e panjohur nga një klient më i ri, një model që nuk kompilohet, contains "") trajtohet si një pyetje që nuk u bë kurrë, jo si false, dhe negate nuk e përmbys atë. Ky dallim është mbajtës peshe: një kusht i prishur i negatuar, i trajtuar si false, do ta aktivizonte rregullin e vet në çdo mesazh të kutisë postare. equals "" nderohet, sepse "rreshti i subjektit është bosh" është pyetje e vërtetë.
Çfarë mund të bëjë një rregull
| Veprimi | `value` | Çfarë ndodh |
|---|---|---|
| `label` | një id etikete | Shton etiketën. Id-të USER_… vijnë nga GET /labels. |
| `remove_label` | një id etikete | E heq atë. Emërtimi i së njëjtës etiketë në të dyja zgjidhet përpara se mesazhi të arkivohet, në vend që t'i lihet asaj që u ekzekutua e fundit. |
| `archive` | asnjë | E nxjerr nga inbox-i. |
| `mark_read` | asnjë | Heq UNREAD. |
| `star` | asnjë | Shton STARRED. |
| `spam` | asnjë | E arkivon te Spam. |
| `trash` | asnjë | E arkivon te Trash, duke pastruar etiketat që një mesazh i hedhur nuk i mban. |
| `forward` | një adresë | Dërgon një kopje më tej. Lexoni shënimin më poshtë përpara se ta përdorni. |
| `reply` | një id ose slug shablloni | Përgjigjet automatikisht me një shabllon të publikuar, subjekt i mbrojtjes ndaj ciklit më poshtë. |
| `block_sender` | asnjë | E shton dërguesin te lista e bllokimit, që mesazhi i radhës të refuzohet që te dera. |
| `reject` | asnjë | E refuzon mesazhin në kohën e SMTP-së me 550 5.7.1 Message refused by the recipient. Vetëm zarfi. Shihni më poshtë. |
reject refuzohet në kohën e shkrimit nëse i njëjti rregull nuk mbart të paktën një kusht envelope_from: reject_needs_envelope, një 422. Një 550 i përgjigjet atij që na e dorëzoi mesazhin, dhe në një listë postare ai është LISTA, e cila e lexon refuzimin si një abonent që po kthen postën dhe e çabonon lexuesin nga diçka ku ai vetëm donte që një person të pushonte së postuari. Edhe me kushtin e shkruar, një përputhje që erdhi vetëm nga identitetet e headerëve zbret në arkivim te Spam, sepse zarfi është i vetmi identitet drejt të cilit mund të drejtohet me ndershmëri një refuzim.
Një forward i nisur nga një rregull del përmes rrugës së dërgimit, e cila e RINDËRTON mesazhin: nënshkrimi origjinal DKIM nuk mbijeton, dhe as pjesët ekzotike, headerët e pazakontë ose çdo gjë përtej tavanit të madhësisë dalëse, të cilin një mesazh prej 25 MB me bashkëngjitje do ta kalojë. Është kopje e asaj që mbërriti, jo mesazhi që mbërriti. Adresa kontrollohet kur shkruhet rregulli, prandaj një destinacion i paverifikuar është një 422 në thirrje dhe jo një rregull që heq në heshtje çdo mesazh të dhjetë.
reply nuk i përgjigjet një makine. Ai shtypet kur mesazhi mbart Auto-Submitted (të ndryshëm nga no), Precedence: bulk|list|junk, List-Id, List-Unsubscribe, X-Autoreply ose X-Autorespond, kur dërguesi i zarfit është bosh (forma që merr çdo bounce) dhe kur headerët nuk u lexuan dot fare. Përveç kësaj, një dërgues merr më së shumti një përgjigje automatike çdo 24 orë nga një kuti postare e dhënë. Dy kuti postare me rregulla përgjigjeje dhe pa mbrojtje i shkruajnë njëra-tjetrës derisa ta vërë re dikush.