215 |
* Proxy Settings:: |
* Proxy Settings:: |
216 |
* Encryption Settings:: |
* Encryption Settings:: |
217 |
* Security Settings:: |
* Security Settings:: |
|
|
|
|
* Option Summary:: |
|
218 |
@end menu |
@end menu |
219 |
|
|
220 |
|
|
259 |
@opindex esmtp-auth @var{username}:@var{password} |
@opindex esmtp-auth @var{username}:@var{password} |
260 |
This option allows you to specify a user name and a password for the |
This option allows you to specify a user name and a password for the |
261 |
ESMTP authentication. Use this option if your MTA requires such an |
ESMTP authentication. Use this option if your MTA requires such an |
262 |
authentication, but your MUA does not support it. A user name (@var{username}) |
authentication, but your MUA does not support it. A @var{username} |
263 |
and a password (@var{password}) are separated with a colon (@samp{:}). |
and a @var{password} are separated with a colon (@samp{:}). |
264 |
Currently only @dfn{CRAM-MD5} and @dfn{LOGIN} authentication methods are |
Currently only @dfn{CRAM-MD5} and @dfn{LOGIN} authentication methods are |
265 |
supported (and @dfn{CRAM-MD5} has a priority). The @dfn{LOGIN} method, |
supported (and @dfn{CRAM-MD5} has a priority). The @dfn{LOGIN} method, |
266 |
for security reasons, can only be used both with the TLS/SSL encryption. |
for security reasons, can only be used both with the TLS/SSL encryption. |
341 |
@deffn Option socks-auth @var{username}:@var{password} |
@deffn Option socks-auth @var{username}:@var{password} |
342 |
@opindex socks-auth @var{username}:@var{password} |
@opindex socks-auth @var{username}:@var{password} |
343 |
Specify a user name and a password, if a SOCKS proxy server requires them. |
Specify a user name and a password, if a SOCKS proxy server requires them. |
344 |
A user name (@var{username}) and a password (@var{password}) are separated |
A @var{username} and a @var{password} are separated with a colon (@samp{:}). |
|
with a colon (@samp{:}). |
|
345 |
@end deffn |
@end deffn |
346 |
|
|
347 |
|
|
383 |
@end deffn |
@end deffn |
384 |
|
|
385 |
|
|
386 |
@node Security Settings, Option Summary, Encryption Settings, CONTROL Section |
@node Security Settings, , Encryption Settings, CONTROL Section |
387 |
@subsection Security Settings |
@subsection Security Settings |
388 |
|
|
389 |
@deffn Option allow-local-mta @var{yes-or-no} |
@deffn Option allow-local-mta @var{yes-or-no} |
411 |
@end deffn |
@end deffn |
412 |
|
|
413 |
|
|
|
@node Option Summary, , Security Settings, CONTROL Section |
|
|
@subsection Option Summary |
|
|
@printindex op |
|
|
|
|
|
|
|
414 |
@node TRANSLATION Section, GUILE Section, CONTROL Section, Configuration |
@node TRANSLATION Section, GUILE Section, CONTROL Section, Configuration |
415 |
@section The TRANSLATION Section |
@section The TRANSLATION Section |
416 |
@cindex TRANSLATION section, The |
@cindex TRANSLATION section, The |
453 |
|
|
454 |
@node GUILE Section, , TRANSLATION Section, Configuration |
@node GUILE Section, , TRANSLATION Section, Configuration |
455 |
@section The GUILE Section |
@section The GUILE Section |
456 |
@cindex GUILE section |
@cindex GUILE section, The |
457 |
@cindex Guile |
@cindex Guile |
458 |
@cindex extension language |
@cindex extension language |
459 |
@cindex Scheme |
@cindex Scheme |
491 |
|
|
492 |
@node Rule System, Invoking Anubis, Configuration, Top |
@node Rule System, Invoking Anubis, Configuration, Top |
493 |
@chapter The Rule System |
@chapter The Rule System |
494 |
|
@cindex rule system |
495 |
|
|
496 |
The rule system is a core part of GNU Anubis. It can be regarded |
The rule system is a core part of GNU Anubis. It can be regarded |
497 |
as a program that is executed for every outgoing message. |
as a program that is executed for every outgoing message. |
532 |
condition is met. A conditional statement in its simplest form is: |
condition is met. A conditional statement in its simplest form is: |
533 |
|
|
534 |
@deffn Syntax if @var{part} [@var{pattern-match-flags}] @var{cond-expr} |
@deffn Syntax if @var{part} [@var{pattern-match-flags}] @var{cond-expr} |
535 |
@deffnx Syntax @var{action-list-1} |
@deffnx Syntax @var{action-list-1} |
536 |
@deffnx Syntax fi |
@deffnx Syntax fi |
537 |
|
|
538 |
The @var{part} specifies which part of the input should be considered |
The @var{part} specifies which part of the input should be considered |
545 |
|
|
546 |
The optional @var{pattern-match-flags} alter the pattern matching |
The optional @var{pattern-match-flags} alter the pattern matching |
547 |
type used in subsequent conditional expression. It |
type used in subsequent conditional expression. It |
548 |
will be described in detail in the section @ref{Regular expressions}. |
will be described in detail in the section @ref{Regular Expressions}. |
549 |
The @var{cond-expr} is a @dfn{conditional expression}. |
The @var{cond-expr} is a @dfn{conditional expression}. |
550 |
It consists of a series of @dfn{conditions} joined together with |
It consists of a series of @dfn{conditions} joined together with |
551 |
boolean operators @samp{and} or @samp{or} (@pxref{Boolean operators}). |
boolean operators @samp{and} or @samp{or} (@pxref{Boolean Operators}). |
552 |
Each condition is: |
Each condition is: |
553 |
|
|
554 |
@table @asis |
@table @asis |
571 |
The simplest example: |
The simplest example: |
572 |
|
|
573 |
@smallexample |
@smallexample |
574 |
|
@group |
575 |
if header [Subject] "^ *Re:" |
if header [Subject] "^ *Re:" |
576 |
... |
... |
577 |
fi |
fi |
578 |
|
@end group |
579 |
@end smallexample |
@end smallexample |
580 |
|
|
581 |
The actions represented by @dots{} will be executed only if the |
The actions represented by @dots{} will be executed only if the |
588 |
syntax is: |
syntax is: |
589 |
|
|
590 |
@deffn Syntax if @var{part} [@var{flags}] @var{cond-expr} |
@deffn Syntax if @var{part} [@var{flags}] @var{cond-expr} |
591 |
@deffnx Syntax @var{action-list-1} |
@deffnx Syntax @var{action-list-1} |
592 |
@deffnx Syntax else |
@deffnx Syntax else |
593 |
@deffnx Syntax @var{action-list-2} |
@deffnx Syntax @var{action-list-2} |
594 |
@deffnx Syntax fi |
@deffnx Syntax fi |
598 |
executed. |
executed. |
599 |
|
|
600 |
@smallexample |
@smallexample |
601 |
|
@group |
602 |
if @var{part} [@var{flags}] @var{cond-expr} |
if @var{part} [@var{flags}] @var{cond-expr} |
603 |
@var{action-list-1} |
@var{action-list-1} |
604 |
else |
else |
605 |
@var{action-list-2} |
@var{action-list-2} |
606 |
fi |
fi |
607 |
|
@end group |
608 |
@end smallexample |
@end smallexample |
609 |
@noindent |
@noindent |
610 |
|
|
617 |
@end deffn |
@end deffn |
618 |
|
|
619 |
@menu |
@menu |
620 |
* Boolean operators:: |
* Boolean Operators:: |
621 |
* Regular expressions:: |
* Regular Expressions:: |
622 |
* Action List:: |
* Action List:: |
623 |
* Triggers:: |
* Triggers:: |
624 |
@end menu |
@end menu |
625 |
|
|
626 |
|
|
627 |
@node Boolean operators, Regular expressions, Rule System, Rule System |
@node Boolean Operators, Regular Expressions, Rule System, Rule System |
628 |
@section Boolean operators |
@section Boolean Operators |
629 |
|
|
630 |
The following table lists the three boolean operators that can be used |
The following table lists the three boolean operators that can be used |
631 |
in Anubis conditional expressions in the order of increasing binding |
in Anubis conditional expressions in the order of increasing binding |
640 |
As an example, let's consider the following statement: |
As an example, let's consider the following statement: |
641 |
|
|
642 |
@smallexample |
@smallexample |
643 |
|
@group |
644 |
if header[X-Mailer] "mutt" or header[X-Mailer] "mail" \ |
if header[X-Mailer] "mutt" or header[X-Mailer] "mail" \ |
645 |
and not header[Content-Type] "^multipart/mixed;.*" |
and not header[Content-Type] "^multipart/mixed;.*" |
646 |
@var{action} |
@var{action} |
647 |
fi |
fi |
648 |
|
@end group |
649 |
@end smallexample |
@end smallexample |
650 |
@noindent |
@noindent |
651 |
|
|
672 |
boolean operators. |
boolean operators. |
673 |
|
|
674 |
|
|
675 |
@node Regular expressions, Action List, Boolean operators, Rule System |
@node Regular Expressions, Action List, Boolean Operators, Rule System |
676 |
@section Regular expressions |
@section Regular Expressions |
677 |
@cindex regex, flag |
@cindex regex, flag |
678 |
@cindex re, flag |
@cindex re, flag |
679 |
@cindex perl, flag |
@cindex perl, flag |
737 |
A couple of examples: |
A couple of examples: |
738 |
|
|
739 |
@smallexample |
@smallexample |
740 |
|
@group |
741 |
if header[Subject] :perlre "(?<=(?<!foo)bar)baz" |
if header[Subject] :perlre "(?<=(?<!foo)bar)baz" |
742 |
... |
... |
743 |
fi |
fi |
744 |
|
@end group |
745 |
@end smallexample |
@end smallexample |
|
@noindent |
|
746 |
|
|
747 |
|
@noindent |
748 |
This will match any @code{Subject} header whose value |
This will match any @code{Subject} header whose value |
749 |
matches an occurrence of @samp{baz} that is preceded by @samp{bar} |
matches an occurrence of @samp{baz} that is preceded by @samp{bar} |
750 |
which in turn is not preceded by @samp{foo}. |
which in turn is not preceded by @samp{foo}. |
752 |
@smallexample |
@smallexample |
753 |
if header[Subject] :scase "^Re" |
if header[Subject] :scase "^Re" |
754 |
@end smallexample |
@end smallexample |
|
@noindent |
|
755 |
|
|
756 |
|
@noindent |
757 |
will match a @code{Subject} header whose value starts with @samp{Re}, |
will match a @code{Subject} header whose value starts with @samp{Re}, |
758 |
but will not match it if it starts with @samp{RE} or @samp{re}. |
but will not match it if it starts with @samp{RE} or @samp{re}. |
759 |
|
|
767 |
Perl documentation. |
Perl documentation. |
768 |
|
|
769 |
|
|
770 |
@node Action List, Triggers, Regular expressions, Rule System |
@node Action List, Triggers, Regular Expressions, Rule System |
771 |
@section Action List |
@section Action List |
772 |
@cindex Action List |
@cindex Action List |
773 |
|
|
781 |
a long time. |
a long time. |
782 |
|
|
783 |
@menu |
@menu |
784 |
* Adding Headers or Text:: |
* Adding Headers or Text:: How to add a new header or body line(s). |
785 |
* Removing Headers:: |
* Removing Headers:: How to remove a message header line(s). |
786 |
* Modifying Messages:: How to modify a message contents on-the-fly. |
* Modifying Messages:: How to modify a message contents on-the-fly. |
787 |
* Inserting Files:: How to append text files to an outgoing message. |
* Inserting Files:: How to append text files to an outgoing message. |
788 |
* Mail Encryption:: How to encrypt a message on-the-fly. |
* Mail Encryption:: How to encrypt a message on-the-fly. |
789 |
* Remailers:: How to enable the support for Remailers Type-I. |
* Remailers:: How to enable the support for Remailers Type-I. |
790 |
* Rot-13:: How to use rot-13 transformation. |
* Rot-13:: How to use rot-13 transformation. |
791 |
* External Processor:: How to process a message body using an external tool. |
* External Processor:: How to process a message body using an external tool. |
792 |
|
* Quick Example:: A quick example of using an action list. |
|
* Command Summary:: A short command summary |
|
|
* Quick Example:: A quick example of using an action list. |
|
793 |
@end menu |
@end menu |
794 |
|
|
795 |
|
|
820 |
to append multiline text to the message, e.g.: |
to append multiline text to the message, e.g.: |
821 |
|
|
822 |
@smallexample |
@smallexample |
823 |
|
@group |
824 |
add body <<-EOT |
add body <<-EOT |
825 |
Regards, |
Regards, |
826 |
Hostmaster |
Hostmaster |
827 |
EOT |
EOT |
828 |
|
@end group |
829 |
@end smallexample |
@end smallexample |
830 |
|
|
831 |
|
|
841 |
|
|
842 |
The name of the header to delete is given by @var{string} parameter. |
The name of the header to delete is given by @var{string} parameter. |
843 |
By default only those headers are removed whose names match it exactly. |
By default only those headers are removed whose names match it exactly. |
844 |
Optional @var{flags} allow to change this behavior. @xref{Regular |
Optional @var{flags} allow to change this behavior. @xref{Regular Expressions}, |
845 |
expressions}, for the detailed description of these. |
for the detailed description of these. |
846 |
@end deffn |
@end deffn |
847 |
|
|
848 |
An example: |
An example: |
1065 |
Example: |
Example: |
1066 |
|
|
1067 |
@smallexample |
@smallexample |
1068 |
|
@group |
1069 |
rule "remail:(.*)/(.*)" |
rule "remail:(.*)/(.*)" |
1070 |
guile-process remailer-I #:rrt antonius_block@@helsingor.net \ |
guile-process remailer-I #:rrt antonius_block@@helsingor.net \ |
1071 |
#:post \1 \ |
#:post \1 \ |
1072 |
#:latent \2 \ |
#:latent \2 \ |
1073 |
#:header "X-Processed-By: GNU Anubis & Remailer-I" |
#:header "X-Processed-By: GNU Anubis & Remailer-I" |
1074 |
done |
done |
1075 |
|
@end group |
1076 |
@end smallexample |
@end smallexample |
1077 |
|
|
1078 |
@end deffn |
@end deffn |
1112 |
For example: |
For example: |
1113 |
|
|
1114 |
@smallexample |
@smallexample |
1115 |
|
@group |
1116 |
rule "rot-13.*body" |
rule "rot-13.*body" |
1117 |
guile-process rot-13 #:body |
guile-process rot-13 #:body |
1118 |
done |
done |
1120 |
rule "rot-13.*subj" |
rule "rot-13.*subj" |
1121 |
guile-process rot-13 #:subject |
guile-process rot-13 #:subject |
1122 |
done |
done |
1123 |
|
@end group |
1124 |
@end smallexample |
@end smallexample |
1125 |
@end deffn |
@end deffn |
1126 |
|
|
1127 |
|
|
1128 |
@node External Processor, Command Summary, Rot-13, Action List |
@node External Processor, Quick Example, Rot-13, Action List |
1129 |
@subsection Using an External Processor |
@subsection Using an External Processor |
1130 |
|
|
1131 |
@deffn Command external-body-processor @var{program} [@var{args}] |
@deffn Command external-body-processor @var{program} [@var{args}] |
1138 |
@end deffn |
@end deffn |
1139 |
|
|
1140 |
|
|
1141 |
@node Command Summary, Quick Example, External Processor, Action List |
@node Quick Example, , External Processor, Action List |
|
@subsection Command Summary |
|
|
@printindex cm |
|
|
|
|
|
|
|
|
@node Quick Example, , Command Summary, Action List |
|
1142 |
@subsection Quick Example |
@subsection Quick Example |
1143 |
|
|
1144 |
Here is a quick example of using an action list: |
Here is a quick example of using an action list: |