mirror of
https://blitiri.com.ar/repos/chasquid
synced 2025-12-17 14:37:02 +00:00
aliases: Implement aliases hooks
This patch implements two new hooks: alias-resolve and alias-exists. They are called during the aliases resolution process, to allow for more complex integration with other systems, such as storing the aliases in a database. See the included documentation for more details.
This commit is contained in:
@@ -77,5 +77,16 @@ The `chasquid-util` command-line tool can be used to check and resolve
|
||||
aliases.
|
||||
|
||||
|
||||
## Hooks
|
||||
|
||||
There are two hooks that allow more sophisticated aliases resolution:
|
||||
`alias-exists` and `alias-resolve`.
|
||||
|
||||
If they exist, they are invoked as part of the resolution process and the
|
||||
results are merged with the file-based resolution results.
|
||||
|
||||
See the [hooks](hooks.md) documentation for more details.
|
||||
|
||||
|
||||
[chasquid]: https://blitiri.com.ar/p/chasquid
|
||||
[email aliases]: https://en.wikipedia.org/wiki/Email_alias
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
|
||||
# Post-DATA hook
|
||||
# Hooks
|
||||
|
||||
chasquid supports some functionality via hooks, which are binaries that get
|
||||
executed at specific points in time during delivery.
|
||||
|
||||
They are optional, and will be skipped if they don't exist.
|
||||
|
||||
|
||||
## Post-DATA hook
|
||||
|
||||
After completion of DATA, but before accepting the mail for queueing, chasquid
|
||||
will run the command at `$config_dir/hooks/post-data`.
|
||||
@@ -21,7 +29,7 @@ This hook can be used to block based on contents, for example to check for
|
||||
spam or virus. See `etc/hooks/post-data` for an example.
|
||||
|
||||
|
||||
## Environment
|
||||
### Environment
|
||||
|
||||
This hook will run as the chasquid user, so be careful about permissions and
|
||||
privileges.
|
||||
@@ -43,3 +51,34 @@ The environment will contain the following variables:
|
||||
There is a 1 minute timeout for hook execution.
|
||||
It will be run at the config directory.
|
||||
|
||||
|
||||
## Alias resolve hook
|
||||
|
||||
When an alias needs to be resolved, chasquid will run the command at
|
||||
`$config_dir/hooks/alias-resolve` (if the file exists).
|
||||
|
||||
The address to resolve will be passed as the single argument.
|
||||
|
||||
The output of the command will be parsed as if it was the right-hand side of
|
||||
the aliases configuration file (see [Aliases](aliases.md) for more details).
|
||||
Results are appended to the results of the file-based alias resolution.
|
||||
|
||||
If there is no alias for the address, the hook should just exit successfuly
|
||||
without emitting any output.
|
||||
|
||||
There is a 5 second timeout for hook execution. If the hook exits with an
|
||||
error, including timeout, delivery will fail.
|
||||
|
||||
|
||||
## Alias exists hook
|
||||
|
||||
When chasquid needs to check whether an alias exists or not, it will run the
|
||||
command at `$config_dir/hooks/alias-exists` (if the file exists).
|
||||
|
||||
The address to check will be passed as the single argument.
|
||||
|
||||
If the commands exits successfuly (exit code 0), then the alias exists; any
|
||||
other exit code signals that the alias does not exist.
|
||||
|
||||
There is a 5 second timeout for hook execution. If the hook times out, the
|
||||
alias will be assumed not to exist.
|
||||
|
||||
Reference in New Issue
Block a user