Szabály létrehozása
Egyik oldalon feltételek, a másikon műveletek. Engedélyezve, hacsak másként nem rendelkezel.
A valódi hívást futtatja le a munkaterületén, a saját kulcsával.
POST /rules
Egyik oldalon feltételek, a másikon műveletek. Engedélyezve, hacsak másként nem rendelkezel.
Példa
rules:write szükséges. 201-et ad vissza. A position nem elfogadott. Az új szabály a lista végére kerül, az áthelyezése a POST /rules/reorder hívással történik.
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"}Az itt létrehozott szabály BE van kapcsolva, és a következő üzenettől működik. Ez a helyes alapértelmezés egy szándékosan indított hívásnál, és az ellentéte az MCP createRule eszköznek, amely ugyanazt a szabályt KIKAPCSOLVA írja, mert egy modell, amely levelek archiválása mellett dönt, ne archiváljon, mielőtt egy ember visszaolvasta a szabályt.
Ugyanazon a kapcsolaton egy ismétlődő name rule_name_taken, 409. A nevek alapján ismerhető fel egy szabály a futási naplóban és a beállítások képernyőjén, így két "Newsletters" nevű szabály olyan jelentést eredményez, amelyet senki nem tud elolvasni.
A 101. szabály rule_limit_reached, 422. A korlát egy ciklusba került szkript elleni védelem, nem elszámolási határ, és nincs zárolva. Két, 99-nél versengő létrehozás egyaránt sikeres lehet.
Mit kérdezhet egy feltétel
Egy feltétel { field, op, value } alakú, opcionális header mezővel, amely megnevezi, melyik fejlécet kell olvasni, és opcionális negate mezővel. A value a hálózaton MINDIG string. A numerikus mezők Number(value) után számként kerülnek összehasonlításra, a két boolean mező pedig a szó szerinti "true" és "false" stringeket fogadja, mert egy mező egy típussal olyan séma, amelyet egy OpenAPI generátor le tud írni, háromféle típus uniója viszont nem.
| Mező | Mit olvas | Operátorok |
|---|---|---|
| `from` | A From: fejléc, ugyanúgy normalizálva, ahogy a tiltólista normalizálja. | text |
| `from_domain` | A From: domainje és a SZÜLŐDOMAINJEI, két címkéig: a mail.corp.example.com feladójú üzenet a corp.example.com és az example.com értékre is egyezik, a com értékre viszont semmire. | text |
| `envelope_from` | Az SMTP MAIL FROM. Minden levelezőlistán eltér a from értéktől, és ez az egyetlen identitás, amelyre egy reject írható. | text |
| `to`, `cc`, `bcc` | Bármely cím az adott fejlécben. | text |
| `recipient` | Bármely cím a to, cc vagy bcc mezőben: rövidítés mindhármára. | text |
| `reply_to` | A Reply-To fejléc. | text |
| `delivered_to` | A kanonikus cím, amelyre ez a példány kézbesítésre került, plusz-címke nélkül és kisbetűsítve; így egyezik egy catch-all alias. | text |
| `subject` | A tárgysor, ahogy megérkezett. | text |
| `body` | A szöveges rész, vagy a szöveggé alakított HTML. Korlátozott, így egy 20 MB-os törzs nem kerül teljes egészében átvizsgálásra. | text |
| `header` | Bármely fejléc, a feltétel saját header mezőjében megnevezve. Ott kötelező, és összehasonlítás előtt kisbetűsítésre kerül. | text |
| `list_id` | A List-Id fejléc: az az azonosító, amellyel egy levelezőlista azonosítja magát. | text |
| `attachment_name` | Bármely melléklet fájlneve. | text |
| `attachment_type` | Bármely melléklet MIME típusa, pl. application/pdf. | text |
| `has_attachment` | Van-e egyáltalán melléklet. | equals "true" / "false" |
| `spam` | A kézbesítési útvonal által hozott spamítélet, mielőtt a szabályaid lefutottak. | equals "true" / "false" |
| `attachment_size` | Egy melléklet mérete bájtban. Az összehasonlítás akkor egyezik, ha bármelyik melléklet teljesíti. | gt, lt, equals |
| `message_size` | A teljes üzenet a hálózaton, bájtban. | gt, lt, equals |
| `hour` | Az érkezés órája, 0–23, UTC. | gt, lt, equals |
| `weekday` | Az érkezés napja, 0–6, a vasárnap a 0, UTC. | gt, lt, equals |
| Operátor | Mit csinál |
|---|---|
| `matches` | Glob, és csak glob: * tetszőleges karaktersorozatra, ? egy karakterre. Reguláris kifejezés nincs. Egy API kliensből származó minta a kézbesítési útvonalon fut, és egy ott katasztrofálisan visszalépő minta egy postafiók, amely leáll a levelek fogadásával. |
| `contains` | Részstring, kis- és nagybetűre érzéketlen. |
| `equals` | A teljes érték, kis- és nagybetűre érzéketlen. Numerikus mezőn numerikus egyenlőség. |
| `starts_with` | Előtag, kis- és nagybetűre érzéketlen. |
| `ends_with` | Utótag, kis- és nagybetűre érzéketlen. |
| `gt`, `lt` | Numerikus, csak a négy numerikus mezőn. Egy szöveges mező gt operátorral soha nem egyezik. |
Egy matches mintának legalább két saját alfanumerikus karaktert kell tartalmaznia, ugyanaz a küszöb, amelyet a tiltólista alkalmaz. Egy puszta * már íráskor elutasításra kerül, ahelyett hogy elfogadnánk, majd csendben minden valaha érkező üzenetre egyezne, ami üzemkimaradás lenne, nem szabály.
Egy feltétel, amelyet a motor nem tud megválaszolni (egy újabb kliensből származó ismeretlen mező, egy nem fordítható minta, contains ""), soha fel nem tett kérdésként kezelendő, nem hamisként, és a negate nem fordítja meg. Ez a megkülönböztetés lényeges: egy hamisként kezelt, negált hibás feltétel a postafiók minden üzenetére elsütné a szabályát. Az equals "" érvényesül, mert „a tárgysor üres” valódi kérdés.
Mit tehet egy szabály
| Művelet | `value` | Mi történik |
|---|---|---|
| `label` | címkeazonosító | Hozzáadja a címkét. A USER_… azonosítók a GET /labels hívásból származnak. |
| `remove_label` | címkeazonosító | Eltávolítja. Ha ugyanaz a címke mindkettőben szerepel, az még az üzenet besorolása előtt feloldásra kerül, nem az dönt, melyik futott utoljára. |
| `archive` | nincs | Kiveszi a beérkezett levelek közül. |
| `mark_read` | nincs | Eltávolítja az UNREAD címkét. |
| `star` | nincs | Hozzáadja a STARRED címkét. |
| `spam` | nincs | A Spam mappába sorolja. |
| `trash` | nincs | A Kuka mappába sorolja, és törli azokat a címkéket, amelyeket egy kukába helyezett üzenet nem tart meg. |
| `forward` | egy cím | Továbbküld egy másolatot. Használat előtt olvasd el az alábbi megjegyzést. |
| `reply` | sablonazonosító vagy slug | Automatikusan válaszol egy közzétett sablonnal, az alábbi hurokvédelem mellett. |
| `block_sender` | nincs | Hozzáadja a feladót a tiltólistához, így a következő üzenete már a bejáratnál elutasításra kerül. |
| `reject` | nincs | SMTP időben elutasítja az üzenetet ezzel: 550 5.7.1 Message refused by the recipient. Csak borítékra. Lásd alább. |
A reject már íráskor elutasításra kerül, hacsak ugyanaz a szabály nem tartalmaz legalább egy envelope_from feltételt: reject_needs_envelope, 422. Az 550 annak válaszol, aki az üzenetet átadta nekünk, és egy levelezőlistán ez maga a LISTA, amely az elutasítást visszapattanó feliratkozóként értelmezi, és leiratkoztatja az olvasót valamiről, ahol csak azt akarta, hogy egy ember ne írjon tovább. Még a feltétel megléte esetén is az a találat, amely csak a fejlécbeli identitásokból adódott, Spam mappába sorolásra fokozódik le, mert a boríték az egyetlen identitás, amelyre egy elutasítás őszintén irányulhat.
Egy szabály által indított forward a küldési útvonalon megy ki, amely ÚJRAÉPÍTI az üzenetet: az eredeti DKIM aláírás nem éli túl, ahogy az egzotikus részek, a szokatlan fejlécek és a kimenő méretplafon feletti tartalom sem, amelyet egy 25 MB-os, mellékleteket tartalmazó üzenet túllép. Ez annak másolata, ami megérkezett, nem maga a megérkezett üzenet. A cím a szabály írásakor ellenőrzésre kerül, így egy nem ellenőrzött cél 422 a hívásra, nem pedig egy szabály, amely csendben minden tizedik üzenetet elejti.
A reply nem válaszol gépnek. Elnyomásra kerül, ha az üzenet Auto-Submitted (a no kivételével), Precedence: bulk|list|junk, List-Id, List-Unsubscribe, X-Autoreply vagy X-Autorespond fejlécet tartalmaz, ha a boríték feladója üres (ilyen minden visszapattanás), és ha a fejlécek egyáltalán nem olvashatók. Ezen felül egy feladó egy adott postafióktól 24 óránként legfeljebb egy automatikus választ kap. Két postafiók válaszszabályokkal és védelem nélkül addig levelez egymással, amíg valaki észre nem veszi.