deletemail - remove old mail from server
deletemail [-nqsuv[v]] [-f file]
deletemail -h | -V
deletemail is a non-interactive tool for deleting mail which
is older than a configurable number of days from one or more
IMAP mailboxes. By default, mail which is not marked as
seen on the server will not be deleted. Currently, the
IMAP4 and IMAP4rev1 protocols are supported, optionally
using SSL/TLS for secure IMAP connections.
Use file instead of $HOME/.deletemailrc for
-h Print a short description of all available options and
-n Mark messages as deleted on the server, but don't
expunge them (that is, omit the IMAP CLOSE command).
This might be useful in order to test whether or not
everything works as expected. However, please note
that the "deleted" flags will not be revoked by
deletemail, so these messages might be expunged by
another IMAP client accessing the mailbox.
-q Quiet output, only error messages are printed.
-s Don't use unique message IDs in IMAP commands. By
default, deletemail will use UIDs when issuing IMAP
SEARCH or STORE commands, since UIDs are safer in case
multiple IMAP clients are accessing the mailbox at the
same time. However, there are IMAP servers which seem
to have problems using UIDs. Thus, if you encounter
strange behaviour (like the server unexpectedly closing
the connection), this option might be helpful.
-u Delete any message which is older than the configured
number of days, no matter whether or not the message is
marked as seen.
-V Print version information and exit.
If the -v option is used, all commands sent to the
server and all server responses will be printed to the
standard error stream. If -v is specified twice,
(quite a lot of) additional debug output will be
By default, the configuration file $HOME/.deletemailrc will
be read. Each IMAP account on which deletemail should
operate is configured by using the keyword ACCOUNT, followed
by variable: value pairs specifying the account settings;
one variable: value pair per line. Apart from that, the
keyword GLOBAL, followed by variable: value pairs may
optionally be used for specifying default settings. If
GLOBAL is used, it must be declared prior to any ACCOUNT
settings. The default settings will only take effect if
they are not specified for a given ACCOUNT.
Configuration values may include all ASCII characters.
Empty lines and the rest of a line after a "#" will be
ignored. Whitespace and "#" must be escaped using a backslash
if the value is not quoted with single or double quotes. If
the value is quoted, the quote sign must be escaped using a
backslash. A literal backslash must always be escaped using
another backslash. If the last character of a configuration
line is a backslash, the following line will be appended
prior to parsing.
Required Configuration Variables
The following configuration variables must be set, either by
specifying default settings using the keyword GLOBAL and/or
by specifying them for each ACCOUNT.
The number of days that messages should stay on the
server. Messages which are not older than specified
here will not be deleted.
The IMAP server name or IP address.
The password for authentication on the server.
The username for authentication on the server.
Optional Configuration Variables
The following configuration variables may be set, either by
specifying default settings using the keyword GLOBAL and/or
by specifying them for one or more ACCOUNTs.
If set to no, messages will still be marked as deleted
on the server, but they won't be expunged by
deletemail. However, these messages might be expunged
by another IMAP client accessing the mailbox. This
variable will be overridden by the -n command line
switch. Default: yes.
folder: <string> [string...]
The mailbox name. Multiple folders may be specified
using a space delimited list. Default: INBOX.
The server port number. Default: 993 for SSL
connections, 143 otherwise.
Specifies usage of SSL/TLS for secure IMAP connections.
If set to yes, SSL on connect will be used; if set to
starttls, the TLS connection will be initiated using
STARTTLS. In both cases, deletemail will exit with an
error prior to sending any login information if the
server doesn't support the respective mechanism.
Default: no. This variable is only available if
deletemail was built with SSL support.
If set to yes, any message that is older than the
configured number of days will be deleted, no matter
whether or not the message is marked as seen. If set
to no, messages which are not marked as seen will never
be deleted. This variable will be overridden by the -u
command line switch. Default: no.
If set to no, deletemail won't use unique message IDs
when talking to the IMAP server. See the -s command
line switch (which will override the use_uid setting)
for implications. Default: yes.
Upon successful completion, deletemail returns 0. If any
sort of error is encountered, deletemail returns a value
other than 0.
Configure deletemail via the file $HOME/.deletemailrc, which
could look like this:
ACCOUNT # Toms INBOX on the ISPs IMAP server
days: 7 # delete mail if it's older than a week
ssl: yes # use SSL for secure IMAP connections
Test your configuration by creating verbose output and not
expunging deleted messages on the server:
Run deletemail once an hour (at twenty past) by using a
crontab(5) entry like the following:
20 * * * * /usr/local/bin/deletemail -q
HOME If the configuration file is not specified on the
command line, $HOME/.deletemailrc will be used.
$HOME/.deletemailrc default configuration file
For SSL connections, deletemail currently does not support
any mechanism to prevent "man in the middle" attacks.
Future releases will probably provide certificate and key
Apart from that, on systems that lack a useable random
device (like /dev/urandom), deletemail will try to collect
some random data for seeding OpenSSLs PRNG on it's own.
However, this is insecure. Please consider installing an
entropy gathering daemon like EGD or PRNGD if your system
doesn't provide a useable random device (the output of
deletemail -vv will tell you whether or not that's the
case). See the OpenSSL manual page RAND_egd(3) for
information on where to get and how to install an entropy
gathering daemon so that OpenSSL will use it automatically.
The mailbox name may not include non-ASCII characters, since
they won't be encoded according to the IMAP standard when
talking to the server. IPv6 is not supported.
I'm sure there are more bugs, please let me know if you find
Holger Weiss <email@example.com>
fetchmail(1), crontab(1), crontab(5), cron(8), ssl(3),
Man(1) output converted with