123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- NAME
- smd - configuration file for smd-pull and smd-push
-
- GENERAL SETUP
- To generate a template config file run smd-pull(1) with the -t option.
- If no endpoint is specified, the configuration file is named
- ~/.smd/config.default, otherwise it is named ~/.smd/config.endpoint.
- That file is composed by the following fields
-
- CLIENTNAME name of the client host
- SERVERNAME name of the server host
- MAILBOX list of directories, separated by space
-
- The field SERVERNAME must be a valid name for ssh, thus can be an alias like
- smd-server-foo. The default configuration file contains an example of how
- to set up an alias for ssh.
-
- The field CLIENTNAME is just an ID for the local host. If you plan to sync
- the same host with multiple remote hosts, you MUST use different values
- for CLIENTNAME for every configuration file.
-
- The field MAILBOX is a space separated list or roots that will be scanned
- for maildirs. Typically it is just one directory name, Mail or Maildir.
- The roots must be paths relative to the home directory.
- In the simplest case, the roots are named the same on both the local and
- the remote hosts.
-
- If the roots have different names on the local and remote hosts, but
- their internal structure is the same, the simplest solution is to just
- use a symlink on one of the two hosts so that a single name can be used
- to refer to both.
-
- If the internal sub folder structure differ, for example because on the remote
- hosts sub folders names are prefixed with a dot but it is not the case on the
- local one, refer to the MAIL FOLDER RENAMING section of this document.
-
- The configuration file is a regular shell script, refer to bash(1) for
- its syntax.
-
- HOOKS
- The content of the directories ~/.smd/hooks/{pre,post}-pull.d/ is executed
- respectively before and after smd-pull does it's job. They receive
- four arguments: "pre" or "post", "pull", the endpoint name and the status.
- The status is always 0 (meaning success) for pre hooks, while can be 1 (for
- failure) for post hooks. Hooks should not fail, if they do so then
- smd-pull will fail too.
-
- The content of the directories ~/.smd/hooks/{pre,post}-push.d/ is executed
- respectively before and after smd-push does it's job. They receive
- four arguments: "pre" or "post", "push", the endpoint name and the status.
- The status is always 0 (meaning success) for pre hooks, while can be 1 (for
- failure) for post hooks. Hooks should not fail, if they do so then
- smd-push will fail too.
-
- MAIL FOLDER RENAMING
- To make the transition from other synchronization tools smooth, the folders
- structure on the local and remote host are allowed to differ. For example,
- offlineimap usually removes trailing dots from the names of sub folders.
-
- To take advantage of folder renaming, the configuration file can contain
- the following fields:
-
- MAILBOX_LOCAL the local roots of maildirs
- MAILBOX_REMOTE the remote roots of maildirs
- TRANSLATOR_RL a program to translate remote mailbox names to local ones
- TRANSLATOR_LR a program to translate local mailbox names to remote ones
-
- The fields MAILBOX_LOCAL and MAILBOX_REMOTE must substitute the MAILBOX
- fields explained above.
-
- The fields TRANSLATOR_RL and TRANSLATOR_LR must define two translator
- programs that will be run to translate remote mailbox names to local
- ones (TRANSLATOR_RL) and vice versa (TRANSLATOR_LR).
- A translator program must fulfil the following requirements:
-
- - must be an absolute path or relative to the $HOME directory or in the
- user $PATH and must be executable
- - receives in standard input one or more paths starting with one of the
- roots listed in MAILBOX_LOCAL (for TRANSLATOR_LR) or MAILBOX_REMOTE
- (for TRANSLATOR_RL) and ending with cur, new or tmp
- - it can fail, returning 1 and writing on standard output the string
- ERROR followed by a new line and a human readable error message in
- the following lines
- - it can succeed, returning 0 and printing on standard output the
- corresponding translated paths
-
- PATHS EXCLUSION
-
- In case some paths need to be skipped, they can be specified as
- space separated glob(7) expressions in the variable:
-
- EXCLUDE glob expressions identifying paths to be excluded
-
- Note that these expressions must match real paths, no translation operation
- is applied to them, so it may be necessary to specify different expressions
- for the local and remote endpoint. In that case the following variables can
- be set:
-
- EXCLUDE_LOCAL glob expressions identifying local paths to be excluded
- EXCLUDE_REMOTE glob expressions identifying remote paths to be excluded
-
- Matching is performed using fnmatch(3) with no special flags, thus `*' and
- `?' match any character including `/'. Last, note that spaces in glob
- expressions must be replaced by %20. For example, to exclude all
- paths matching the expression `Mail/delayed [1-5] days/*' the variable
- EXCLUDE must be set to `Mail/delayed%20[1-5]%20days/*'
-
- Last, matching is performed every time a directory is entered, and if
- the matching succeeds the directory and all its subdirectories are skipped.
- Thus there is no need to specify a trailing '/*' in every expression.
-
- LOCAL SYNCHRONIZATION
-
- If the local and remote mailboxes are on the same host the following
- option must be added to the configuration file:
-
- SMDCLIENTOPTS=-l
-
- Note that this options has also the effect that ssh is not used. A a simple
- pair of pipes is used instead.
-
- DELETIONS
-
- In some cases, usually unidirectional synchronizations, one may want
- to not propagate deletions. E.g. one keeps a slim working mailbox but
- pushes to a backup mailbox to save every email. For that scenario
- smd-pull and smd-push accept a -n, --no-delete, option.
- To avoid specifying this option every time one can put it in the
- configuration file:
-
- SMDSERVEROPTS=-n
-
- FILES
-
- ~/.smd/config.*
- ~/.smd/hooks/pre-pull.d/
- ~/.smd/hooks/post-pull.d/
- ~/.smd/hooks/pre-push.d/
- ~/.smd/hooks/post-push.d/
-
- SEE ALSO
- mddiff(1), smd-server(1), smd-client(1), smd-push(1), smd-loop(1), smd-translate(1)
-
- AUTHOR
- Enrico Tassi <gares@fettunta.org>
|