Both sides previous revisionPrevious revisionNext revision | Previous revision |
setting_up_the_vacation_1_email_auto-responder_on_sdf [2021/03/22 06:18] – hc9 | setting_up_the_vacation_1_email_auto-responder_on_sdf [2021/03/22 06:33] (current) – [Misc:] hc9 |
---|
===== Setting up the vacation(1) email auto-responder on SDF: ===== | ====== Setting up the vacation(1) email auto-responder on SDF: ====== |
| |
==== What: ==== | ==== What: ==== |
==== How vacation(1) works: ==== | ==== How vacation(1) works: ==== |
| |
The tool uses two files - "$HOME/.vacation.msg" and "$HOME/.vacation.db" by default - to a) issue an auto-reply message, and b) track who and when a sender was replied to. vacation(1) is usually called via a user's "$HOME/.forward" file, but as the tool can read from stdin(4) there are other possibilities, ie. in conjunction with procmail(1). | The tool uses two files - ''$HOME/.vacation.msg'' and ''$HOME/.vacation.db'' by default - to a) issue an auto-reply message, and b) track who and when a sender was replied to. vacation(1) is usually called via a user's ''$HOME/.forward'' file, but as the tool can read from stdin(4) there are other possibilities, ie. in conjunction with procmail(1). |
| |
=== Basic setup procedure: === | === Basic setup procedure: === |
| |
* initialize the DB file; initialization creates the DB file if it doesn't exist and sets/resets the vacation interval timer - the period it waits to resend an auto-reply. The default interval is one (1) week; to specify an different interval use "'-t nu'", where "n" is an integer and "u" is "s", "m", "h", "d", or "w" (seconds, minutes, hours, days, weeks; week is default). If "n" = 0 and "u" is omitted, a notice is sent for every message. If "n" is set to a very large number, say 9999, no sender will ever receive more than one notice. | * initialize the DB file; initialization creates the DB file if it doesn't exist and sets/resets the vacation interval timer - the period it waits to resend an auto-reply. The default interval is one (1) week; to specify an different interval use '''-t nu<nowiki>'</nowiki>'', where "n" is an integer and "u" is ''s'', ''m'', ''h'', ''d'', or ''w'' (seconds, minutes, hours, days, weeks; week is default). If "n" = 0 and "u" is omitted, a notice is sent for every message. If "n" is set to a very large number, say 9999, no sender will ever receive more than one notice. |
* create the auto-reply message. The message needs to be a routable email file with a header and body section. A "$SUBJECT" variable is supported for a more customized response. | * create the auto-reply message. The message needs to be a routable email file with a header and body section. A ''$SUBJECT'' variable is supported for a more customized response. |
* edit the "$HOME/.forward" file to pipe mail through vacation(1); it's good idea to test the configuration beforehand using the vacation(1) "'-d'" debug option. | * edit the ''$HOME/.forward'' file to pipe mail through vacation(1); it's good idea to test the configuration beforehand using the vacation(1) '''-d<nowiki>'</nowiki>'' debug option. |
| |
==== Some examples: ==== | ==== Some examples: ==== |
... | ... |
</code> | </code> |
- edit "$HOME/.forward" on //ma.sdf.org// like so: <code> | - edit ''$HOME/.forward'' on //ma.sdf.org// like so: <code> |
# .forward | # .forward |
\sdf_user, "| ssh sdf_user@tty 'cat - | vacation sdf_user' " | \sdf_user, "| ssh sdf_user@tty 'cat - | vacation sdf_user' " |
=== ex.4) using vacation(1) with procmail(1): === | === ex.4) using vacation(1) with procmail(1): === |
| |
Users of the procmail(1) program probably won't want to disable it just to make use of vacation(1). The following illustrates how to integrate vacation(1) into a typical user's "$HOME/.procmailrc" file; it should be inserted above any "delivery" recipes so all messages are passed through: | Users of the procmail(1) program probably won't want to disable it just to make use of vacation(1). The following illustrates how to integrate vacation(1) into a typical user's ''$HOME/.procmailrc'' file; it should be inserted above any "delivery" recipes so all messages are passed through: |
| |
<code> | <code> |
</code> | </code> |
| |
The "$HOME/.vacation.list" is just a simple text file listing those email addresses you want to send notifications to, one per line. If you don't need the functionality just leave the "'egrep'" line commented out. | The ''$HOME/.vacation.list'' is just a simple text file listing those email addresses you want to send notifications to, one per line. If you don't need the functionality just leave the '''egrep<nowiki>'</nowiki>'' line commented out. |
| |
Note that "$HOME/.vacation.db" still needs to be initialized since this filter is just a pipe to vacation(1) which does the real processing. | Note that ''$HOME/.vacation.db'' still needs to be initialized since this filter is just a pipe to vacation(1) which does the real processing. |
| |
==== Misc: ==== | ==== Misc: ==== |
| |
* There is a "pure procmail" filter option that implements much of the vacation(1) functionality; see the procmailex(5) manpage for code. | * There is a "pure procmail" filter option that implements much of the vacation(1) functionality; see the procmailex(5) manpage for code. |
* Passing the "'-F R'" option to vacation(1) forces checking of the Return-Path: field which can help in some cases. See the vacation(1) manpage for details as well as other options. | * Passing the '''-F R<nowiki>'</nowiki>'' option to vacation(1) forces checking of the Return-Path: field which can help in some cases. See the vacation(1) manpage for details as well as other options. |
* The "$HOME/.vacation.db" file is a hashed Burkeley DB binary file. It can be read somewhat using strings(1); useful for determining who has been auto-replied to: <code> | * The ''$HOME/.vacation.db'' file is a hashed Burkeley DB binary file. It can be read somewhat using strings(1); useful for determining who has been auto-replied to: <code> |
% strings $HOME/.vacation.db | grep "@" | % strings $HOME/.vacation.db | grep "@" |
frog@mud.bog | frog@mud.bog |