This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
devel:blueprints:mailin [2009/01/30 09:53] morten |
devel:blueprints:mailin [2009/01/30 10:43] morten |
||
---|---|---|---|
Line 15: | Line 15: | ||
* The payload will be offered in turn to each registered plugin. | * The payload will be offered in turn to each registered plugin. | ||
* Once a plugin accepts the payload, MailIn core will not offer it to any other plugin. | * Once a plugin accepts the payload, MailIn core will not offer it to any other plugin. | ||
- | * MailIn core instructs the selected plugin to process the payload. | + | * MailIn core asks the selected plugin to authorize the payload. |
- | * The plugin will process the payload in whatever manner it sees fit, and using the ''nav.event'' API, one or more events should be generated and posted to the event queue. | + | * The plugin will check its authorization configuration, to see whether the email is allowed to generate an event. Typically, the headers are inspected to find the source of the email. |
+ | * If authorized, MailIn core will ask the plugin to process the payload. | ||
+ | * The plugin will process the payload in whatever manner it sees fit, and using the ''nav.event'' API, one or more events should be generated and posted to the event queue. | ||
+ | ==== Plugin API ==== | ||
+ | A MailIn plugin consists of a Python module, which should provide three functions: | ||
+ | ^ function ^ required ^ description ^ | ||
+ | | ''accept(payload)'' | yes | Must return a true value if the payload can be processed by this plugin. | | ||
+ | | ''authorize(payload)'' | no | Must return a true value if the payload is authorized to generate an event, according to plugin-internal rules/configuration. If this function is not supplied by the plugin, the MailIn core must use a global authorize function to perform authorization according to globally configured rules. | | ||
+ | | ''process(payload)'' | yes | Process the payload, generate and post a single or multiple events. Return a true value if successful. | | ||
+ | |||
+ | The plugin must expect the ''payload'' object to be a message object from [[http://docs.python.org/library/email.html|Python's standard email library]]. |