-
-
Notifications
You must be signed in to change notification settings - Fork 3
indimail.7
IndiMail - A Multi-host distributed Mail Server
IndiMail is an messaging platform built using following packages
-
qmail
-
serialmail
-
qmailanalog
-
dotforward
-
fastforward
-
mess822
-
daemontools
-
ucspi-tcp
-
Courier IMAP/POP3
-
Bogofilter - A Bayesian Spam Filter
-
Fetchmail
other useful software which are needed on a typical email server
-
pack
-
unpack
-
altermime
-
ripmime
-
flash
Apart from providing ESMTP, IMAP, POP3 service, IndiMail provides Management of Virtual domains. IndiMail works on both 32 / 64 bit Unix platforms.
IndiMail consists of two packages.
The indimail-mta package which provides
o MTA, SMTP, QMQP, QMTP o daemontools package o ucspi-tcp package o bogofilter spam filter o fetchmail mail retrieval package
The indimail-mta package can be installed and function without the indimail package. If it finds the libindimail shared library, indimail-mta works seamlessly with virtual domains configured locally or on multiple hosts. This it does by dynamically loading the libindimail.so shared library by reading the control file libindimail or accessing the environment variable VIRTUAL_PKG_LIB.
The indimail package provides
o libindimail shared library o courier-imap for IMAP/POP3 o checkpassword or PAM authentication modules for IMAP/POP3 o virtual domain management. o vdelivermail local delivery agent.
The indimail package requires indimail-mta package to be installed. In fact, if you install indimail package using apt-get, yum/dnf, indimail-mta package will be automatically installed.
IndiMail provides qmail-remote / qmail-local, proxyimap & proxypop3 which are user-location aware (on which server the user's mailbox lies). This gives IndiMail the ability to distribute the users across multiple hosts using standard non-proprietary protocols detailed in standard RFCs. The other use of user-location aware property is to have a single domain consisting of a heterogeneous email server environment (with some users on MS Exchange and some on Lotus Notes some on IndiMail). To distribute mails for users across multiple hosts, IndiMail uses qmail-remote(8). qmail-remote(8) gives the ability to distribute the mails using SMTP or QMTP. You can use the ROUTES environment variable to "smtp" or "qmtp" to choose the protocol. You can have multiple hosts hosting a domain placed geographically anywhere and tied up by IndiMail. The architecture does not force a filesystem architecture like NFS to be used to distribute the users. In other words, IndiMail allows you to extend a domain across multiple servers and hence provide the ability to scale to any number of users. Such a domain which is extended across multiple servers is called a distributed domain. A distributed domain consists of multiple mailstore and one or many MySQL servers. A mailstore is a host which has the user's mail storage in Maildir. The MySQL servers hold user information like path of the Maildir, user privileges, user aliases and forwardings, user's mailstore. The MySQL servers can be present on the mailstores itself or as individual servers or as a single server holding information for all users on all mailstores. The configuration is flexible and is left to the user so that one can optimize on cost or performance.
When an IMAP or POP3 client logs in through proxyimap/proxypop3, the following takes place:
-
The proxy analyzes the login sequence
-
Extracts the user name of the user trying to login
-
Does a lookup query on the local server to find out the server having the mailbox of the user attempting the login. This lookup service (named inlookup(8)) runs on all mailbox servers and accepts requests through a well defined FIFO.
indimail-mta uses a highly modified qmail and provides all features needed in a modern MTA. However, all features have been added by re-using the functions/libraries provide by stock qmail (stralloc, substdio, alloc, str, env, etc). Detailed feature list of IndiMail is provided on the website http://www.indimail.org
IndiMail has two databases. For most purposes, IndiMail can function with just the local database. For a distributed environment, IndiMail requires two databases.
local database - Contains all user information, attributes
[step]
central database - Used only when configured as a distributed domain.
This database is refered to as 'clusterinfo'.
For a non-distributed architecture, you need a local MySQL database. To connect to this MySQL database, you need to have a control file host.mysql. This control file contains the IP address or hostname of the MySQL database corresponding to the local database. If the control file host.mysql is missing, programs will use localhost to connect to MySQL. One can also use host:user:password:socket/port[:ssl] format for host.mysql.
The local database consists of the following tables
indimail
[step]
indibak
[step]
valias
[step]
vlimits
[step]
userquota
[step]
relay
[step]
lastauth
[step]
atrn_map
[step]
dir_control
[step]
fstab
[step]
ip_alias_map
[step]
vfilter
[step]
vlog
[step]
bulkmail
A distributed domain in IndiMail is achieved by having a central MySQL database called clusterinfo. clusterinfo stores information about the user's storage server (mailstore) and each mailstore's individual local MySQL database's connection parameters (host, user, password, socket or port, ssl/nossl). This database is also referred to as the central database. It consists of the following tables
hostcntrl
[step]
host_table
[step]
dbinfo
[step]
smtp_port
[step]
mgmtaccess
[step]
vpriv
The table hostcntrl has the fields user, domain and hostid. hostid is a unique identifier which needs to be assigned to every server on which email accounts need to be created. These servers are also called mailstores. The program hostcntrl(8) can be used to add, modify, delete entries to the table hostcntrl. The program vadduser(1) also adds user entries to this table. Each hostid needs to be mapped to an IP address. This is maintained in the table host_table. A program called vhostid(8) can be used to add, modify or delete entries in host_table.
To be able to access the central database, IndiMail programs need the following control files in the directory /etc/indimail/control
host.master
[step]
host.cntrl
These control file contains the IP address or hostname of the MySQL database corresponding to the central database. You can also use host:user:password:socket/port[:ssl] format for these control files. If you plan to have a master-slave MySQL architecture, you can have entry in host.master pointing to the MySQL master database and have entry in host.cntrl pointing to the MySQL slave database. With these control files, all indimail programs ensure that all writes go to the master database and reads happen only from the slave database. The control files host.master, host.cntrl can be overriden by the environment variables MASTER_HOST and CNTRL_HOST. One can also give host:user:password:mysql_socket/port[:ssl] as the format for host.master and host.cntrl.
IndiMail uses gethostid(3) and getaddrinfo(3) to figure out its identity. getaddrinfo(3) requires your hosts address to be either resolved by dns or be present in hosts(5) /etc/hosts. You can bypass gethostid(3) and getaddrifno(3) by have your hostid in /etc/indimail/control/hostid and your IP address in /etc/indimail/control/localiphost.
In a distributed setup, you can have multiple servers with each server having its own set of local users. The information for these users are stored in a MySQL database known as the local database. You can have multiple local databases with each database serving one email server. You can also club user information for multiple email servers in a single MySQL local database. This flexibility helps IndiMail achieve scalability. So apart from the user's location which is maintained in the central database, other user attributes like home directory, gecos, quota, access rights are maintained in another MySQL database called the local database.
Access to the individual local database by indimail programs is made easy by, having the parameters needed to connect to each of the MySQL local datbase, in a table called dbinfo, on the central database. The same information can be maintained in a control file /etc/indimail/control/mcdinfo. The file mcdinfo allows one to maintain and sync information about each and every mailstore on the dbinfo table. The updation depends on the timestamp of the mcdinfo file and dbinfo table. The moment mcdinfo is updated, the same information gets updated in the dbinfo table. The moment dbinfo gets updated, the file mcdinfo on all other mailstore (older than the dbinfo table) gets updated. The entries in dbinfo table / mcdinfo file can be seen by running the dbinfo(8) program. Whenever a new mailstore is added/removed, the entry for the mailstore and the corresponding MySQL local database needs to be added/removed in the dbinfo table or mcdinfo file. In short, the entries in the dbinfo table and the mcdinfo control file on all servers are kept in sync.
Depending on how IndiMail was configured during the build process, it can dynamically load the libmysqlclient library using dlopen(3), by reading the control file mysql_lib or the environment variable MYSQL_LIB environment variable. The advantage of such a build is the ability to use either MariaDB or MySQL client libraries as the library is not linked during the linking stage.
It may be noted that the connection to MySQL can be fine tuned by editing the file /etc/indimail/indimail.cnf. This file has [client] section that all indimail programs use. It also has [mysqld] section which is used my mysqld(8), if it is managed by supervise(8). You can also change the behaviour of the MySQL connections by setting enviroment variables. Please see the section on 'Environment Variables' to understand that.
In case you do not require a multi-host setup, IndiMail does not require central database. Programs just need to connect to the local database which can be configured by having the control file /etc/indimail/control/host.mysql.
The local database consists of the following tables
indimail
[step]
indibak
[step]
valias
[step]
vlimits
[step]
userquota
[step]
relay
[step]
lastauth
[step]
atrn_map
[step]
dir_control
[step]
fstab
[step]
ip_alias_map
[step]
vfilter
[step]
vlog
[step]
bulkmail
The main local table is the indimail table. It has the following columns
pw_name - This has the username
[step]
pw_domain - This has the domain name
[step]
pw_passwd - This has an encryted password
[step]
pw_uid
[step]
pw_gid
[step]
pw_gecos
[step]
pw_dir
[step]
pw_shell
[step]
scram
[step]
salted
[step]
timestamp
IndiMail has an idea of email domains that are "local" and "virtual". Local domains are ones which primarily match against /etc/passwd. Virtual domains match against domains listed in the control file /etc/indimail/control/virtualdomains. IndiMail makes use of the /var/indimail/users/assign file and virtualdomains file. The users/assign file gets compiled into a users/cdb file. It is a hashed database to speed searches for patterns. If a pattern is matched then IndiMail delivers the email to the directory defined in the file using the uid and gid which is also defined. IndiMail makes use of this method to deliver all virtual domain email as the single uid/gid indimail/indimail. It also uses it to take delivery instructions from /var/indimail/domains/<virtualdomain>/.qmail-default file. Once qmail-local gets the information from the users/assign file it performs standard .qmail file processing in the directory. Normal .qmail-<user> files can be used for forwarding, aliases or invoking programs such as ezmlm. If no matches are found qmail-local looks for a .qmail-default file. This is the last stage in qmail-local's delivery mechanism. qmail-local uses this file to invoke the vdelivermail program. This program takes two parameters, the first is not used (it is there for backward compatibility). The second parameter is the default delivery if a virtual domain user can not be found. Basically, it can be one of the following
Full path to a indimail user directory
[step]
email address to forward email to
[step]
the string bounce-no-mailbox to bounce the email back to the sender.
[step]
Address in SMTPROUTE format to which vdelivermail should use SMTP to
deliver the mail. e.g.
indimail.org:192.168.1.55:25
where indimail.org is the local domain, 192.168.1.55 is the IP address of an SMTP server for indimail.org and 25 is the SMTP port.
IndiMail gets it's own home directory. A typical IndiMail installation will have the following directories in the directory /var/indimail.
Directory Description | |
---|---|
alias System aliases postmaster, mailer-daemon, root | |
domains Virtual domain directories, each having .qmail-default file | |
mysqldb Local MySQL database (MySQL database in data, logs in logs) | |
autoturn Domains supporting ETRN, AUTOTURN support | |
qscanq Directory for virus scanning if qscanq is used | |
clamd clamd virus signature database |
Binaries, shared libraries, documentation, development files, etc lie in the following directores
Directory Description | |
---|---|
/usr/bin All user binaries | |
/usr/sbin Binaries required by administrators | |
/usr/lib64 Shared/Development Libraries (lib for 32 bit) | |
/usr/include Include files for IndiMail API | |
/usr/lib/indimail/plugins Plugins for qmail-queue, tcpserver, etc | |
/usr/lib/indimail/modules Loadable modules for flash menu system | |
/usr/libexec/indimail/imapmodules Authentication modules for courier-imap | |
/usr/share/indimail/doc Documentation | |
/usr/share/indimail/boot Startup files | |
/usr/share/man Man pages | |
/etc/indimail/users assign, cdb file | |
/etc/indimail/control Most of IndiMail's configuration file lie here | |
/etc/indimail bogofilter.cf, spam wordlist, tcp.[smtp,imap,pop3].cdb, etc | |
/etc/indimail/certs SSL/TLS Certificates |
Apart from the above, IndiMail has all logs in the directory /var/log/svc. These contain both informational and error logs for services configured in /service. See the SECTION STARTUP for more details.
Directory Description | |
---|---|
clamd clamd virus scanner log | |
freshclam clamd signature update log | |
qscanq qscanq virus scanner log | |
smtpd.25 Log for qmail-smtpd running on port 25 | |
smtpd.587 Log for qmail-smtpd Message Submission Port rfc-2476(5) | |
smtpd.366 Log for qmail-smtpd ODMR port rfc-2645(5). | |
smtpd.465 Log for qmail-smtpd on SMTPS port | |
qmtpd.209 Log for qmail-qmtpd on QMTP port | |
qmqpd.628 Log for qmail-qmqpd on QMQP port | |
deliver.25 qmail-send deliver log | |
slowq slowq-send deliver log | |
fetchmail fetchmail log | |
greylist.1999 greylist daemon log | |
imapd.143 Log for imapd running on port 143 | |
imapd-ssl.993 Log for imapd running on port 993 (SSL) | |
proxyIMAP.4143 Log for IMAP proxy running on port 4143 | |
proxyIMAP.9143 Log for IMAP proxy running on port 9143 (SSL) | |
pop3d.110 Log for pop3d running on port 110 | |
pop3d-ssl.995 Log for pop3d running on port 995 (SSL) | |
proxyPOP3.4110 Log for POP3 proxy running on port 4110 | |
proxyPOP3.9110 Log for POP3 proxy running on port 9110 (SSL) | |
indisrvr.4000 Log for IndiMail administration daemon | |
inlookup.infifo Log for inlookup server | |
pwdlookup Log for NSS daemon for password lookups | |
poppass.106 Log for poppassd protocol daemon | |
mysql.3306 Log for MySQL service | |
qmail-logfifo Log for clients using fifologger | |
svscan Log for svscan service | |
daned.1998 service for getting TLSA records | |
udplogger.3000 Log for udplogger service | |
mrtg MRTG service | |
.svscan svscan service and local /etc/resolv.conf namespace | |
resolvconf Provide private local namespace for /etc/resolv.conf | |
dnscache DNS cache service |
IndiMail uses an adaptive directory structure based on a table dir-control which is automatically managed by the core programs vadduser(1) and vdeluser. The basic idea is to break up the user Maildir directories across multiple directories and sub directories so that there are never more than 100 user directories in a single directory.
In a single file system, the default directory setup allows for 62 directories in 3 levels and 100 user directories per directory. The total number of user directories is equal to (62 * 100) + (62 * 62 * 100) + (62 * 62 * 62 * 100) = over 24 million directories per filesystem. This should be more than sufficient for any site and probably goes beyond the technology of directory structures.
If you are going to be storing large numbers of user directories, make sure you set your file system to have a higher than normal percentage of inodes.
IndiMail will automatically create these directories and sub directories as needed and populate each directory with up to 100 user accounts. As soon as a directory reaches 100 users it will create the next directory or sub directory and store the new users directory there.
You can use the vreorg(8) program to recreate the dir-control table.
Some IndiMail programs set or use environment variables. The following table lists these variables and describes their use.
EnvironmentVariable Program Set/Used Purpose | |||
---|---|---|---|
QMAILQUEUE qmail-smtpd used Program to be called instead | |||
qmail-inject qmail-queue | |||
new-inject | |||
condredirect | |||
dot-forward | |||
fastforward | |||
filterto | |||
forward | |||
maildirserial | |||
ofmipd | |||
qmail-local | |||
qmail-qmtpd | |||
qmail-qmqpd | |||
qmail-send | |||
qreceipt | |||
replier | |||
rrforward | |||
_ | |||
QUEUEPROG qmail-multi used Program to be called to queue message | |||
default is qmail-queue. You can define | |||
this to be qmail-qmqpc in order to send | |||
messages to a to a QMQP server | |||
_ | |||
CONTROLDIR qmail-smtpd used The directory containing control files. | |||
qmail-remote If not defined /etc/indimail/control | |||
spawn-filter is used | |||
qmail-local | |||
ipmeprint | |||
qmail-newmrh | |||
qmail-send | |||
qmail-showctl | |||
qmail-spamdb | |||
todo-proc | |||
qmail-command | |||
_ | |||
QUEUEDIR qmail-queue used queue path from where to pick up mails | |||
qmail-clean for local and remote deliveries | |||
qmail-daemon | |||
qmail-rm | |||
qmail-send | |||
qmail-tcpok | |||
qmail-tcpto | |||
todo-proc | |||
spawn-filter | |||
qmail-lspawn | |||
qmail-rspawn | |||
_ | |||
ENVRULES qmail-smtpd used Any environment variable(s) can be set | |||
spawn-filter based on senders/recipients matching a | |||
qmail-inject given value. | |||
smtp | |||
REQUIREAUTH, QREGEX, ENFORCE_FQDN_HELO, | |||
DATABYTES, BADHELOCHECK, BADHELO, | |||
NODNSCHECK, VIRUSCHECK, SIGNATURES, | |||
BODYCHECK, BADMAILFROM, DATABYTES_NOTIFY, | |||
BADMAILFROMPATTERNS, BOUNCEMAIL, | |||
CUGMAIL, MASQUERADE, DEFAULT_DOMAIN, | |||
BADRCPTTO, BADRCPTPATTERNS, TARPITCOUNT, | |||
TARPITDELAY, MAXRECIPIENTS, AUTH_ALL, | |||
CHECKRELAY, CONTROLDIR, ANTISPOOFING, | |||
CHECKRECIPIENT SPAMFILTER, LOGFILTER, | |||
SPAMFILTERARGS, SPAMEXITCODE, | |||
REJECTSPAM, SPAMREDIRECT, SPAMIGNORE, | |||
SPAMIGNOREPATTERNS, FILTERARGS, | |||
QMAILQUEUE, QMAILREMOTE, QMAILLOCAL, | |||
RELAYCLIENT, QQEH, BADEXT, | |||
BADEXTPATTERNS, ACCESSLIST, QHPSI, | |||
REJECTSPAM, REJECTVIRUS, FORCE_TLS | |||
spawn-filter SPAMFILTER, LOGFILTER, SPAMFILTERARGS, | |||
FILTERARGS, SPAMEXITCODE, REJECTSPAM, | |||
SPAMREDIRECT, SPAMIGNORE, | |||
SPAMIGNOREPATTERNS, QREGEX, DATABYTES, | |||
SMTPROUTE, ONSUCCESS_REMOTE | |||
ONFAILURE_REMOTE, ONTEMPORARY_REMOTE | |||
_ | |||
QREGEX qmail-smtpd used If set, regex is used to evaluate | |||
spawn-filter patterns in | |||
1.badhelo | |||
2.blackholedsender | |||
3.badmailfrom | |||
4.badrcptto | |||
5.spamignore | |||
6.relaymailfrom | |||
7.authdomains | |||
8.chkrcptdomains | |||
9.accesslist | |||
_ | |||
EXTRAQUEUE qmail-queue used Extra recipient to be added to the | |||
recipient list before queueing the mail. | |||
QHPSI qmail-queue used If set enables the Qmail High | |||
Performance Scanner Interface. This | |||
should be set to the path of the virus | |||
scanner. It can also be set to a list of | |||
space separted plugins starting with the | |||
keyword plugin: | |||
QHPSIRC qmail-queue used To specify the return code of the virus | |||
scanner in case of an infection; | |||
default is 1. | |||
QHPSIMINSIZE qmail-queue used The minimal size of the message to | |||
invoke the virus scanner; default is 0. | |||
A typical choice would be | |||
QHPSIMISIZE=10000 (~10k). | |||
QHPSIMAXSIZE qmail-queue used The maximal size of the message to | |||
invoke the virus scanner; default is | |||
unrestricted. A typical choice would be | |||
QHPPIMAXSIZE=1000000. | |||
QUARANTINE qmail-queue used If set, all mails get redirected to the | |||
id defined by the environment variable | |||
QHPSIFORWARD qmail-queue used If set, virus infected mails get | |||
redirectored to the id defined by the | |||
environment variable | |||
REJECTVIRUS qmail-queue used Sets action to be carried out on | |||
detection of virus | |||
0 Accept infected mails | |||
1 Bounce the mail. | |||
2 Blackhole the mail. | |||
NULLQUEUE qmail-queue used If set, mail transaction is sent to | |||
/dev/null without returning an error | |||
(blackholing) | |||
MAILARCHIVE qmail-queue used mail archival rules based on sender | |||
or recipient addresses | |||
ENVHEADERS qmail-queue used Contains list of email headers that | |||
should be available as environment | |||
variables in qmail-local and | |||
qmail-remote | |||
LOGHEADERS qmail-queue used Name of control file containing list | |||
of email headers whose value along | |||
with header name should be written | |||
to the file descriptor defined by the | |||
LOGHEADERFD env variable | |||
LOGHEADERFD qmail-queue used This defines the file descriptor to be | |||
used for writing when logheaders control | |||
file or LOGHEADERS environment variable | |||
is used. | |||
REMOVEHEADERS qmail-queue used Name of control file containing a list | |||
of email headers that should be removed | |||
before putting into the queue. If not | |||
supplied, qmail-queue uses the control | |||
file removeheaders. | |||
QQEH qmail-queue used qmail-queue passes this variable into | |||
qmail-local the queue. qmail-local and qmail-remote | |||
forward will prepend it to the headers of email | |||
condredirect when it is delivered | |||
PLUGINDIR qmail-queue used Directory in /var/indimail containing | |||
qmail-send dynamically loadable plugins | |||
qmail-smtpd | |||
QUEUE_PLUGIN_SYMB qmail-queue used The function to be called when a | |||
dynamic virus scanner plugin is loaded | |||
default is 'virruscan' | |||
START_PLUGIN qmail-send used List of startup plugins to be loaded | |||
default is qmail-send.so | |||
START_PLUGIN_SYMB qmail-send used function to be executed from the loaded | |||
plugins. Default is 'startup' | |||
SMTP_PLUGIN qmail-smtpd used SMTP plugin to be loaded. Default is | |||
smtpd-plugin.so | |||
SMTP_PLUGIN_SYMB qmail-smtpd used The function to be called after loading | |||
SMTP plugins. Default is 'plugin_init' | |||
DISABLE_PLUGIN qmail-smtpd used If set, loading of SMTP plugin is | |||
disabled | |||
_ | |||
PLUGINn tcpserver used Here n is 0, 1, 2, ... | |||
PLUGINn_dir You can preload shared objects in tcpserver | |||
PLUGINn_init by using PLUGINn variable. PLUGIN_DIR, | |||
and PLUGIN_init variable can be used | |||
to modify the cwd and a function to be | |||
called for initializatoin purposes | |||
Note: This feature should be used | |||
when you specifiy this plugins instead | |||
of executables on the command line | |||
_ | |||
TRIVIAL_PASSWORDS iwebadmin used If set, allows use of unsafe plain text | |||
passwords | |||
DISABLE_CRYPT vchkpass used Disable crypt method in AUTH LOGIN, PLAIN | |||
qmail-smtpd Disables both AUTH LOGIN and PLAIN | |||
authindi | |||
ENABLE_CRAM vchkpass used Allow crypted password field to be used as | |||
password for CRAM authentcation methods | |||
NATIVE_PASSWORD vchkpass used Sets authentication for dovecot checkpassword | |||
DISABLE_AUTH_LOGIN qmail-smtpd Disable AUTH LOGIN method | |||
qmail-remote | |||
DISABLE_AUTH_PLAIN qmail-smtpd Disable AUTH PLAIN method | |||
qmail-remote | |||
DISABLE_CRAM_MD5 qmail-smtpd Disable AUTH CRAM-MD5 method | |||
qmail-remote | |||
vchkpass | |||
authindi | |||
proxyimap | |||
proxyimap | |||
vsetpass | |||
systpass | |||
DISABLE_CRAM_SHA1 qmail-smtpd Disable AUTH CRAM-SHA1 method | |||
qmail-remote | |||
vchkpass | |||
authindi | |||
proxyimap | |||
proxyimap | |||
vsetpass | |||
systpass | |||
DISABLE_CRAM_SHA256 qmail-smtpd Disable AUTH CRAM-SHA256 method | |||
qmail-remote | |||
vchkpass | |||
authindi | |||
proxyimap | |||
proxyimap | |||
vsetpass | |||
systpass | |||
DISABLE_CRAM_RIPEMD qmail-smtpd Disable AUTH CRAM-RIPEMD method | |||
qmail-remote | |||
vchkpass | |||
authindi | |||
proxyimap | |||
proxyimap | |||
vsetpass | |||
systpass | |||
DISABLE_DIGEST_MD5 qmail-smtpd Disable AUTH DIGEST-MD5 method | |||
qmail-remote | |||
vchkpass | |||
authindi | |||
proxyimap | |||
proxyimap | |||
vsetpass | |||
systpass | |||
_ | |||
DOMAINQUEUE qmail-smtpd used Define domain specific queues | |||
_ | |||
QUEUE_COUNT qmail-multi used No of queues setup | |||
QUEUE_START qmail-multi used Number denoting the first queue | |||
QUEUEDIR qmail-multi set queue path where mails are queued | |||
MIN_FREE qmail-multi used Minimum free disk space allowed on the | |||
QUEUE filesystem after which mails get | |||
rejected with a temporary error. By | |||
setting this the IndiMail system becomes | |||
crashproof as well as bounceproof | |||
SPAMFILTER qmail-multi used Filter program to filter mail before | |||
spawn-filter passing it to qmail-queue | |||
SPAMFILTERARGS qmail-multi used Arguments to be passed to the spam | |||
spawn-filter filter program. | |||
SPAMEXITCODE qmail-multi used Exit code of the spamfilter which | |||
spawn-filter denotes a spam mail. | |||
REJECTSPAM qmail-multi used If set, and if the filter program | |||
spawn-filter returns an exit code matching the value | |||
of SPAMEXITCODE, the mail is permanently | |||
rejected | |||
SPAMIGNORE qmail-smtpd used ignore users listed in this control file | |||
spawn-filter | |||
chowkidar | |||
SPAMIGNOREPATTERNS qmail-smtpd used same as above, except that the user list | |||
spawn-filter can have wildcards. | |||
chowkidar | |||
SPAMREDIRECT qmail-multi used Redirect SPAM tagged mails to the user | |||
spawn-filter specified by this environment variable | |||
FILTERARGS qmail-multi used Arguments with with Filter program will | |||
spawn-filter be called | |||
LOGFILTER qmail-smtpd used If set, any programs called using QMAILQUEUE | |||
spawn-filter or FILTERARGS env variable can use | |||
the file descriptor 255 where it can log | |||
additonal status messages to be logged | |||
in the qmail-smtpd's log file. This | |||
should be set to a filename which will | |||
be used by the qmail-spamlog service. | |||
MAKE_SEEKABLE qmail-multi used If set, the pipe used by various | |||
spawn-filter programs to communicate is made | |||
vdelivermail seekable. This improves the performance | |||
autoresponder of filters. | |||
ismaildup | |||
_ | |||
QMAILLOCAL spawn-filter used The mda to call for local deliveries | |||
(default qmail-local if not defined) | |||
QMAILREMOTE spawn-filter used The smtp client to call for remote | |||
deliveries (default qmail-remote if | |||
not defined) | |||
RATELIMIT_DIR spawn-filter used Directory for rate limit definitions | |||
_ | |||
ONSUCCESS_REMOTE qmail-remote used if set, program defined by | |||
ONFAILURE_REMOTE ONSUCCESS_REMOTE gets called on | |||
ONTEMPORARY_REMOTE successful remote deliveries. similarly | |||
program defined by ONFAILURE_REMOTE gets | |||
called on failed remote deliveries and | |||
program defined by ONTEMPORARY_REMOTE | |||
gets called on deferrals. | |||
Arguments passed to this program are same | |||
as that for qmail-remote. These programs | |||
runs as uid qmailr. | |||
_ | |||
SMTPTEXT qmail-remote set Contains the conversation during SMTP or | |||
QMTPTEXT QMTP transaction with a remote SMTP/QMTP | |||
server. | |||
_ | |||
SMTPCODE qmail-remote set Contains the 3 digit code returned by | |||
QMTPCODE remote SMTP/QMTP server during an | |||
SMTP/QMTP transaction. | |||
_ | |||
OUTGOINGIP qmail-remote used set the IP for outoing connections | |||
_ | |||
DEFAULT qmail-command set Portion of address matching "-default" | |||
in a .qmail file name. | |||
DTLINE Delivered-To header field | |||
EXT The address extension | |||
EXT2 Portion of EXT following first dash | |||
EXT3 Portion of EXT following second dash | |||
EXT4 Portion of EXT following third dash | |||
HOST The domain part of the recipient address | |||
HOST2 Portion of HOST preceding last dot. | |||
HOST3 Portion of HOST preceding second-to-last | |||
dot | |||
HOST4 Portion of HOST preceding third-to-last | |||
dot | |||
HOME The user's home directory | |||
LOCAL The local part of the recipient address | |||
NEWSENDER Forwarding sender address | |||
(see "man dot-qmail") | |||
RECIPIENT Envelope recipient address | |||
RPLINE Return-Path header field | |||
SENDER Envelope sender address | |||
UFLINE UUCP-style "From" line | |||
USER The current user | |||
_ | |||
LOGNAME qmail-inject used User name in From header field | |||
MAILHOST Host name in From header field | |||
MAILNAME Personal name in From header field | |||
MAILUSER User name in From header field | |||
NAME Personal name in From header field | |||
QMAILDEFAULTDOMAIN Overrides control/defaultdomain | |||
QMAILDEFAULTHOST Overrides control/defaulthost | |||
QMAILHOST Host name in From header field | |||
QMAILIDHOST Overrides control/idhost | |||
QMAILINJECT Specify various options (see next | |||
table) | |||
QMAILMFTFILE File containing list of mailing list | |||
addresses for Mail-Followup-To | |||
generation | |||
QMAILNAME Personal name in From header field | |||
QMAILPLUSDOMAIN Overrides control/plusdomain | |||
QMAILSHOST Host name in envelope sender address | |||
QMAILSUSER User name in envelope sender address | |||
QMAILUSER User name in From header field | |||
USER User name in From header field | |||
_ | |||
DKQUEUE qmail-dk used Specifies the path to the qmail-queue | |||
executable. If this is not set, qmail-dk | |||
will invoke qmail-multi | |||
DKSIGN qmail-dk used If set to the path of a private key, | |||
qmail-dk signs the message using the | |||
private key. This variable should be set | |||
when a host is authorized to relay. | |||
DKVERIFY qmail-dk used If set, messages are verified and | |||
qmail-dk will insert the | |||
DomainKey-Status header. The behaviour | |||
depends on the set of letters to which | |||
DKVERIFY is set. A conservative set of | |||
letters is DEGIJKfh | |||
DKSIGNOPTIONS qmail-dk used Options to use for dk signing. | |||
dk-filter | |||
_ | |||
DKIMQUEUE qmail-dkim used Specifies the path to the qmail-queue | |||
executable. If this is not set, | |||
qmail-dkim will invoke qmail-multi | |||
DKIMSIGN qmail-dkim used If set to the path of a private key, | |||
qmail-dkim signs the message using the | |||
private key. This variable should be set | |||
when a host is authorized to relay. | |||
DKIMVERIFY qmail-dkim used If set, messages are verified and | |||
qmail-dkim will insert the DKIM-Status | |||
header. | |||
DKIMSIGNOPTIONS qmail-dkim used Options to use for dkim signing | |||
dk-filter | |||
SIGN_PRACTICE qmail-dkim used For using SSP or ADSP as the signing | |||
practice | |||
_ | |||
DATABYTES qmail-smtpd used override control/databytes | |||
qmail-inject used override control/databytes | |||
sendmail used override control/databytes | |||
spawn-filter used override control/databytes | |||
DATABYTES_NOTIFY qmail-smtpd used notification is sent to recipient in | |||
databyte limit gets exceeded. | |||
_ | |||
BOUNCEPROCESSOR qmail-send used External bounceprocess to call for | |||
handling bounces. | |||
BOUNCEQUEUE qmail-send Queue to be used for injecting bounces | |||
TODO_INTERVAL qmail-send To set the minumum time interval between | |||
todo-proc two todo runs. By increasing this you | |||
can reduce the disk IO. But there is a | |||
latency on mail delivery times | |||
_ | |||
TMPDIR qmail-multi used Sets directory to use for temporary | |||
qmail-qfilter files. Default is /tmp | |||
qmail-smtpd | |||
spawn-filter | |||
vbulletin | |||
PROTO sendmail used Used internally by sendmail -bs flag. | |||
_ | |||
RELAYCLIENT qmail-smtpd used Ignore control/rcpthosts and append | |||
value to recipient address. This is used | |||
for selective relaying to domains not | |||
listed in rcpthosts. | |||
AUTH_ALL If set, sending mail to all domains will | |||
require authentication (regardless of | |||
whether the domain is listed in | |||
rcpthosts). | |||
REQUIREAUTH If set, 'mail from' is not accepted | |||
without prior authenticated SMTP. | |||
AUTH_DOMAINS List of comma separated domains whose | |||
senders will allways require | |||
authentication to send out mails | |||
(regardless of whether the domain is | |||
listed in rcpthosts). Multiple domains | |||
can also be set with ':' or newline as | |||
the delimiter. e.g. | |||
AUTH_DOMAINS=`cat ~indimail/control/authdomains` | |||
where authdomains is a file containing | |||
list of domains one per line. | |||
CHECKRELAY Relay table in MySQL is checked for | |||
'return path' before sending mails to | |||
outside domains. Allows users to relay | |||
mails to foreign domains. | |||
CHECKRECIPIENT Used for checking the status of the | |||
user. The presence of the user can be | |||
checked in MySQL (indimail) or | |||
indimail~/users/recipients.cdb. If the | |||
control file chkrcptdomains is present, | |||
then only domains listed in | |||
chkrcptdomainare checked. If | |||
chkrcptdomain is absent, all domains | |||
are checked. The value of CHECKRECIPIENT | |||
can be one of the 3 values | |||
1.Check MySQL | |||
2.Check both MySQL and recipients.cdb | |||
3.Check recipients.cdb | |||
MASQUERADE Allows the authenticated userid in AUTH | |||
SMTP to be different from the | |||
CUGMAIL Return-Path. Turns of relaying to | |||
ANTISPOOFING foreign domains. Turns of spoofing of | |||
Return-Path for local users. | |||
MAXRECIPIENTS Maximum number of recipients allowed in | |||
a single SMTP session. | |||
TARPITCOUNT Maximum number of recipients allowed in | |||
a single SMTP session after which an | |||
artificial delay is introduced. | |||
TARPITDELAY No of seconds of delay to be imposed on | |||
the SMTP session when number of | |||
recipients in a single SMTP session | |||
exceeds the value of TARPITCOUNT | |||
BADHELOCHECK Enables checking of badhelo control | |||
file and validity of the HELO/EHLO | |||
string as a valid domain. | |||
BADHELO Use this as the filename for bad helo | |||
REGEX strings. | |||
ENFORCE_FQDN_HELO Forces argument to helo/ehlo command to | |||
be a fully qualified domain name. | |||
BOUNCEMAIL When this is set, SMTP server issues | |||
this as a message to the client with a | |||
permanent error. | |||
WARNMAIL Enables warn_mail function. | |||
WARNMAIL X-Spam-Warning: lines inserted in | |||
.. WARNMAIL9 message if these are set. | |||
SHUTDOWN Issues temporary errors for all commands | |||
BADMAILFROM Override the default name for the | |||
'badmailfrom' control file | |||
BADMAILPATTERNS Override the default name for the | |||
'badmailpatterns' control file | |||
BADRCPTTO Override the default name for the | |||
'badrcptto' control file | |||
BADRCPTPATTERNS Override the default name for the | |||
'badrcptpatterns' control file | |||
BODYCHECK Enables content filtering during a SMTP | |||
session. The value of BODYCHECK | |||
environment variable specifies the name | |||
of the control file containing regex | |||
patterns to be matched in an email. | |||
VIRUSCHECK Enables in-built virus scanning engine | |||
in qmail-smtpd. Virus patterns can be | |||
maintained in the control file | |||
'signatures'. If set to a value > 1, | |||
it can be used to call an external | |||
scan engine for checking viruses and | |||
bad attachments | |||
1.Internal scanner | |||
2.Internal+External+attachment scan. | |||
3.Internal+attachment scan | |||
4.External+attachment scan | |||
5.External scanner | |||
6.Attachment scan | |||
SIGNATURES Override the name of the default virus | |||
pattern control file 'signatures' | |||
HOSTACCESS Defines from which IP address or set of | |||
IP addresses can mail from a particular | |||
domain originate. | |||
PARANOID If set, then only pairs having a match | |||
in the 'hostaccess' control file are | |||
granted access | |||
DOMAIN_MASQUERADE If set, all IP address having a match in | |||
the 'hostaccess' control file are | |||
granted access | |||
_ | |||
STARTTLS qmail-smtpd used Enables the ESMTP STARTTLS extension | |||
SMTPS Turns on the deprecated SMTPS protocol | |||
on port 465 | |||
SERVERCERT File having SSL certificate to be | |||
presented to clients in TLS encrypted | |||
sessions. This overrides the control | |||
file servercert.pem | |||
CLIENTCA A file having list of Certifying | |||
Authority (CA) certificates that are | |||
used to verify the client-presented | |||
certficates during a TLS-encrypted | |||
session. This overrides the control | |||
file clientca.pem | |||
CLIENTCRL File having a list of Revocation Lists | |||
(CRLs). This overrides the control file | |||
clientcrl.pem | |||
TLSCIPHERS A set of OpenSSL cipher strings. | |||
Multiple ciphers contained in a string | |||
should be separated by a colon. | |||
FORCE_TLS used If set enforces use of STARTTLS during | |||
SMTP authentication. | |||
SECUREAUTH used If set disables use of AUTH PLAIN and | |||
LOGIN during SMTP authentication. | |||
CERTDIR used Directory where all certs are located | |||
_ | |||
CLIENTCERT qmail-remote used File having SSL certificate to be | |||
presented to clients in TLS encrypted | |||
sessions. This overrides the control | |||
file clientcert.pem | |||
CERTDIR used Directory where all certs are located | |||
_ | |||
NODNSCHECK qmail-smtpd used If set, the domain part of an email | |||
address is not verified. | |||
SPFBEHAVIOUR SPF check gets enabled | |||
0.SPF Disabled | |||
1.Annotate with Received-SPF fields | |||
2.Producte temporary failures on DNS | |||
lookup problems | |||
3.Reject if SPF record says fail | |||
4.Strict mode. Reject for 'fail' | |||
and 'softfail' | |||
5.Reject for 'fail', 'softfail' | |||
and 'neutral' | |||
6.Reject if no SPF record is | |||
available or for syntax error | |||
OPENRELAY If set, qmail-smtpd rejects incoming | |||
connection with (553 code) the message | |||
No mail accepted from an open relay | |||
GREYIP If set, will send a UDP packet to | |||
greydaemon for greylisting | |||
GREETDELAY Time in seconds by which qmail-smtpd | |||
delays the 220 ESMTP welcome prompt. | |||
This overrides the greetdelay control | |||
file. | |||
_ | |||
SCANCMD qscanq used The virus scanner to run for scanning | |||
emails. A '%s' in SCANCMD will get | |||
replaced with the filename in the mess | |||
directory (file containing the entire | |||
content of the email) | |||
BADEXT qscanq-stdin used Name of control file specifying list of | |||
prohibited filename extensions in mail. | |||
BADEXTPATTERNS qscanq-stdin used Name of control file specifying regex | |||
patterns of list of prohibited filename | |||
extensions in mail | |||
SCANDIR qscanq used Name of directory where qscanq will | |||
create temporary work directory for | |||
extracting mime from emails. | |||
SCANINTERVAL svscan used Time interval in which svscan should do | |||
a directory scan to look for new | |||
services. If set to 0, scanning is | |||
disabled. However the scan can be | |||
manually triggered by sending svscan a | |||
HUP signal. If not set, the default | |||
scan interval is 5 seconds. | |||
_ | |||
USE_FSYNC qmail-queue used Causes fsync() to be used for all | |||
qmail-local open files. This makes IndiMail crash | |||
qmail-send proof with a minor performance penalty | |||
todo-proc | |||
USE_SYNCDIR qmail-queue used Emulates BSD style synchronous | |||
qmail-local directories. | |||
qmail-send | |||
todo-proc | |||
ROUTES qmail-rspawn used If defined as static, control/smtproutes | |||
or control/qmtproutes is used. Else hostcntrl | |||
is used to set SMTPROUTE / QMTPROUTE | |||
variables depending on whether | |||
the ROUTES is defined as "smtp" or "qmtp" | |||
SMTPROUTE qmail-rspawn set set to user's mailstore ip if ROUTES is | |||
defined as "smtp" | |||
QMTPROUTE qmail-rspawn set set to user's mailstore ip if ROUTES is | |||
defined as "qmtp" | |||
SMTPROUTE qmail-remote used overrides control/smtproutes | |||
QMTPROUTE qmail-remote used overrides control/qmtproutes | |||
AUTH_SMTP qmail-remote used Uses Authenticated SMTP on the remote | |||
SMTP server to push out mails. The | |||
username and password must be specified | |||
in smtproutes separated by spaces. e.g. | |||
test.com:25 [email protected] pass | |||
DOMAINBINDINGS qmail-remote Name to be used for the domainbindings | |||
control file. | |||
AUTHSELF qmail-lspawn used Causes PWSTRUCT environment variable to | |||
be set. This eliminates the need for | |||
vdelivermail to make connection to the | |||
database (MySQL). On a high volume | |||
server, this can significantly improve | |||
the database performance. | |||
PWSTRUCT qmail-lspawn set Has /etc/passwd format. Set by | |||
qmail-lspawn after doing vauth_getpw() | |||
_ | |||
PWSTRUCT vdelivermail used Uses the environment variable to fetch | |||
vfilter the passwd structure rather than from | |||
the database. | |||
MDA vfilter used Executable to be called for delivering | |||
the mail. By default, vfilter calls | |||
vdelivermail. Command line arguments | |||
can also be specified in the environment | |||
variable | |||
MAILCOUNT_LIMIT vdelivermail used Max deliveries permitted for a user in | |||
a day. | |||
MAILSIZE_LIMIT Max total size of mail delivery/day for | |||
a user. | |||
OVERQUOTA_MAILSIZE Maximum allowed size of mail when user | |||
is over quota | |||
ELIMINATE_DUPS vdelivermail used If set, duplicate emails are discarded | |||
ismaildup | |||
DUPLICATE_INTERVAL vdelivermail used Interval within which same email will | |||
ismaildup be discarded as duplicate | |||
HOLDOVERQUOTA If set, vdelivermail will defer mails | |||
when user runs out of quota. The command | |||
defined by OVERQUOTA_CMD will be run. | |||
However, BOUNCE_FLAG and lastdeliver | |||
table will not be updated | |||
MAILDIRFOLDER Alternate Folder to deliver incoming | |||
mail. | |||
MTA Default MTA to use for injecting mails | |||
(currently qmail-inject or postfix) | |||
FAST_QUOTA vdelivermail used If set, maildirsize is not updated when | |||
reading quota | |||
MAILDIRSIZE_MAX_AGE The max age of maildirsize, above which | |||
maildirsize entres will be collapsed to | |||
reduce size | |||
MAILDIRSIZE_MAX_SIZE Max size of maildirsize, above which | |||
maildirsize entries will be collapsed to | |||
reduce size | |||
_ | |||
OVERQUOTA_CMD vdelivermail used Command to be run when user becomes | |||
authindi overquota. Triggered during mail | |||
delivery or during IMAP/POP3 | |||
authentication. | |||
_ | |||
INCLUDE_TRASH vdelivermail used If set, vdelivermail will include trash | |||
in quota calculations. | |||
_ | |||
REAL_DOMAINS qmail-rspawn used List of real domains separated by the | |||
qmail-lspawn ':' character. e.g. | |||
InLookup indimail.org:yahoo.com | |||
vfilter | |||
vdelivermail | |||
ALIAS_DOMAINS List of aliasdomain-realdomain pair | |||
separated by the ':' character. e.g. | |||
indimail.in,indimail.org:yahoo.co.in,yahoo.com | |||
_ | |||
POSTAUTH authindi used Command to be run post successful | |||
systpass authentication. If return value is 2 or | |||
vchkpass 3, the homedir gets set to the | |||
proxyimap environment variable TMP_MAILDIR if | |||
proxypop3 defined else it gets set to the user's home | |||
directory. | |||
If the return value is 3, authindi will | |||
additionally display a message defined | |||
by the environment variable MSG_ONERROR | |||
(if defined) and will exit if the | |||
environment variable EXIT_ONERROR is | |||
defined. | |||
TMP_MAILDIR authindi used Home directory set for imap/pop3 if the | |||
proxyimap command defined by POSTAUTH exits with 2 | |||
proxypop3 or 3 | |||
MSG_ONERROR Message displayed to IMAP/POP3 clients | |||
when script defined by POSTAUTH exits | |||
with 2 or 3 | |||
EXIT_ONERROR If the command defined by POSTAUTH | |||
environment variable exits with 2 or 3 | |||
and this environment variable is | |||
defined, IMAP/POP3 client will exit | |||
preventing the user from accessing | |||
mailbox | |||
AUTHSERVICE authindi set imap, pop3 or webmail | |||
PROTOCOL imaplogin set Set to IMAP or SMAP1 by imaplogin | |||
pop3login Set to POP3 by pop3login | |||
_ | |||
DESTPORT proxyimap used Used to determine whether the | |||
proxypop3 destination port is imap or pop3. The | |||
authindi format is either imap:port_num or | |||
pop3:port_num, where port_num is a port | |||
on which either IMAP or POP3 server is | |||
listening. | |||
NOLASTAUTH If set, lastauth insert is disabled | |||
during authentication. | |||
MIGRATEUSER Program to be run once (first time) when | |||
the user logs in successfully | |||
(successful authentication). | |||
MIGRATEFLAG Zero bytes file created in User's | |||
Maildir to figure out if the migration | |||
program defined by environment variable | |||
MIGRATEUSER has been run. | |||
ACTIVATEMAIL Specifies the default name of the | |||
activation mail in the bulk mail | |||
directory. | |||
WELCOMEMAIL Specifies the default name of the | |||
welcome mail in the bulk mail directory. | |||
BULK_MAILDIR Constitutes part of the bulk mail | |||
directory. e.g. for indimail.org the bulk | |||
mail directory will be | |||
/var/indimail/domains/indimail.org/$BULK_MAILDIR | |||
BULK_HOST Environment variables to be set when the | |||
'bulkmail' table lies on a remote MySQL | |||
host. | |||
BULK_VPORT Port for the 'bulkmail' MySQL | |||
BULK_SOCKET Socket for the 'bulkmail' MySQL | |||
BULK_USER User for the 'bulkmail' MySQL | |||
BULK_PASSWD Password for the 'bulkmail' MySQL | |||
BULK_DATABASE Database for the 'bulkmail' MySQL | |||
MIN_LOGIN_INTERVAL Minimum time permitted between two | |||
successful authentication. | |||
Authentication requests made before this | |||
teme elapsed are rejected. To remove | |||
this restriction, set this to 0. | |||
NORELAY If set, insert to table 'relay' | |||
after successful authentication | |||
is disabled. This in effect disables | |||
relaying (Roaming Users). | |||
TCP_FILE File containing list of default tcprules | |||
to be applied. Default is | |||
/var/indimail/etc/tcp.smtp. | |||
OPEN_SMTP File containing list of tcprules for IP | |||
addresses of users who have | |||
authenticated in the past | |||
RELAY_CLEAR_MINUTES. Default | |||
is /etc/indimail/tcp/open-smtp | |||
_ | |||
RELAY_TABLE authindi used MySQL table name containing user | |||
InLookup authentication timestamps for | |||
clearopensmtp implementing POP/IMAP before SMTP. | |||
_ | |||
PASSWD_CACHE authindi used Enables Password caching. Improves | |||
InLookup performance for a very busy site. For | |||
vchkpass dormant sites, this should be turned off | |||
as passwd changes take time to get | |||
reflected. | |||
QUERY_CACHE authindi used Enables Query caching by using inquery. | |||
InLookup Improves performance for a very busy site. | |||
vchkpass | |||
vsetpass | |||
sq_vacation | |||
iauth | |||
_ | |||
RELAY_CLEAR_MIN clearopensmtp used No of minutes after which the | |||
-UTES InLookup authentication request maintained in the | |||
vuserinfo relay table is expired. This is used for | |||
authindi sites using pop/imap before smtp | |||
vchkpass authentication | |||
proxyimap | |||
proxypop3 | |||
_ | |||
DATA_TIMEOUT proxyimap used Used for timing out if no data flows | |||
proxypop3 between the user's MUA and the proxy, or | |||
between the proxy and the actual | |||
IMAP/POP3 daemon. | |||
SLEEPTIME Minimum duration between connection | |||
attempts, if connection is refused. | |||
CERTFILE openssl certificate to use | |||
LEGACY_SERVER If the destination imap/pop3 server are | |||
not indimail then this needs to be set. | |||
The destination imap/pop3 server will | |||
always see proxy server's IP address | |||
regardless from where the user logs in. | |||
_ | |||
DOMAIN_LIMITS authindi used The vlimit structure is checked and the | |||
vadduser pw_gid field is OR'ed with the value | |||
vdeldomain fetched from the vlimit table. This | |||
iauth allows domain wide limits to be set for | |||
vacation users. | |||
vdelivermail | |||
vpasswd | |||
vsetpass | |||
vuserinfo | |||
vchkpass | |||
vgroup | |||
vrenameuser | |||
vmoveuserdir | |||
vreorg | |||
vpurge | |||
inlookup | |||
vmoduser | |||
vsetuserquota | |||
vcfilter | |||
vfilter | |||
_ | |||
IMAPCLIENT proxyimap used If set, access to IMAP is granted | |||
POP3CLIENT proxypop3 used If set, access to POP3 is granted | |||
_ | |||
ADMIN_HOST adminclient used variables used to connect to indisrvr | |||
for adding users. Also used by | |||
adminclient for executing administration | |||
commands. | |||
ADMIN_PORT proxypop3 Port for connecting to indisrvr | |||
ADMIN_USER proxyimap User for connecting to indisrvr | |||
ADMIN_PASS Password for connecting to indisrvr | |||
ADMIN_TIMEOUT Used to set timeout for executing any | |||
administration command by indisrvr | |||
_ | |||
HARD_QUOTA vadduser Default value of quota for user addition | |||
through vadduser (without -q option). | |||
ALLOWCHARS vadduser used List of allowed characters in the | |||
username. | |||
AVG_USER_QUOTA vfstab used value in bytes the average mailbox size | |||
for a user. | |||
_ | |||
CNTRL_HOST InLookup used Environment variables to be set when a | |||
qmail-rspawn domain is extended across multiple | |||
qmail-lspawn servers. These variables point to the | |||
vuserinfo central database which has the | |||
vserverinfo 'hostcntrl' table. If both MASTER_HOST | |||
and CNTRL_HOST are defined all updates | |||
go to MASTER_HOST adn all queries go | |||
to CNTRL_HOST | |||
CNTRL_USER User for connecting to MySQL database | |||
CNTRL_PASSWD password for connecting to MySQL | |||
database | |||
CNTRL_VPORT port for connecting to MySQL database | |||
CNTRL_SOCKET socket for connecting to MySQL database | |||
CNTRL_TABLE Table for storing user location | |||
default is 'hostcntrl' | |||
CNTRL_DATABASE database on which table 'hostcntrl' is | |||
present. default is 'indimail' | |||
MASTER_HOST Host to which all writes should go to | |||
_ | |||
INFIFO InLookup used Name of FIFO used for communicating with | |||
qmail-smtpd InLookup. InLookup pools connections to | |||
authindi MySQL and provides the interface between | |||
proxyimap IndiMail and MySQL | |||
proxypop3 | |||
inquerytest | |||
INFIFODIR used Directory specifying location of INFIFO | |||
_ | |||
DEBUG_LOGIN authindi used If set, displays all login parameters | |||
iauth in logs | |||
_ | |||
DEBUG InLookup used Enables verbose debugging | |||
vckpass | |||
EDITOR dbinfo used Editor to use for editing the MCD file | |||
HOME mate used These programs uses the HOME environment | |||
osh variable to switch its CWD. | |||
supernotepad | |||
secpanel | |||
lite | |||
TABLE_NAME osh used Access control file for granting program | |||
specific access to users. | |||
TERM osh used Initialize various escape sequence for | |||
terminal handling | |||
logtop | |||
MAIL maildir2mbox used mbox file name | |||
MAILDIR maildirwatch used These programs use the MAILDIR | |||
environment to select the Maildir | |||
MAILTMP maildir2mbox used Temporary file that maildir2mbox can | |||
overwrite | |||
MCDFILE InLookup used Mail Control Definition file. Specifies | |||
dbinfo the list of all MySQL servers | |||
vuserinfo participating in a distributed setup. | |||
vserverinfo | |||
MAXADDR chowkidar used Number of addresses to load in chowkidar | |||
_ | |||
TCPLOCALHOST tcpclient set The domain name of the local host. If | |||
tcpserver there is no currently available domain | |||
name for the local IP address, | |||
TCPLOCALHOST is not set | |||
TCPLOCALIP The IP address of the local host in | |||
dotted-decimal form | |||
TCPLOCALPORT The local TCP port numer, in decimal | |||
TCPREMOTEPORT The remote TCP port number. | |||
_ | |||
TCPREMOTEHOST tcpclient set The domain name of the remote host, with | |||
tcpserver uppercase letters converted to | |||
tcprulescheck lowercase. If there is no currently | |||
available domain name for the remote IP | |||
address, TCPREMOTEHOST is not set. | |||
TCPREMOTEINFO A connection-specific string, perhaps a | |||
username, supplied by the remote host | |||
via 931/1413/IDENT/TAP. If the remote | |||
host did not supply connection | |||
information, TCPREMOTEINFO is not set. | |||
_ | |||
TCPREMOTEIP tcpclient set The IP address of the remote host. | |||
tcpserver | |||
tcprulescheck | |||
rblsmtpd | |||
_ | |||
POST_HANDLE vadddomain used Used to set the path to program that | |||
vdeldomain will be executed on successful completion | |||
vrenamedomain of the program. If not set, program with | |||
vadduser the same name as that of the calling | |||
vdeluser program will be executed in the directory | |||
vrenameuser /var/indimail/libexec. If the program exists, | |||
vmoveuserdir then return status of the handle will be | |||
vpasswd returned | |||
vmoduser | |||
vaddaliasdoman | |||
_ | |||
COURIERTLS imapd/pop3d used Path to ssl enabler (sslerator / couriertls) | |||
IMAP_STARTLS imapd If set to yes, STARTTLS is advertised | |||
IMAP_TLS_REQUIRED imapd If set to 1, STARTTLS is enforced | |||
POP3_STARTLS pop3d If set to yes, STARTTLS is advertised | |||
POP3_TLS_REQUIRED pop3d If set to 1, STARTTLS is enforced | |||
TLS_CERTFILE imapd/pop3d Path to certficate | |||
TLS_PROTOCOL imapd/pop3d TLS1 or SSL3 depending on wheter you | |||
use straight SSL or STARTTLS | |||
TLS_VERIFYPEER imapd/pop3d Set to NONE if you don't want to require | |||
a client certificate | |||
BANNER sslerator Banner to display when STARTTLS is issued | |||
_ | |||
ACCT_INACT_EXPIRY pam-multi used Max days a account can be inactive after | |||
pam-checkpwd PAM authentication will expire the account | |||
PASSWORD_EXPIRY (if using Max days within which the password has | |||
iauth.so) to be changed. After this, authentication | |||
will return failure | |||
_ | |||
MESSID qmail-lspawn set Path of message file in queue | |||
qmail-rspawn | |||
_ | |||
DELAYED_INSERT authvchkpw used used delayed insert during inserts, | |||
vdelivermail deletes, updates, replace | |||
vadduser | |||
vdeluser | |||
vmoduser | |||
vmoveuserdir | |||
vpasswd | |||
vrenamedomain | |||
vrenameuser | |||
authindi | |||
proxyimap | |||
proxypop3 | |||
inlookup | |||
indisrvr | |||
vchkpass | |||
clearopensmtp | |||
_ | |||
DISCARD_BOUNCE vdelivermail used Discard bounces if set | |||
_ | |||
AUTHINFO qmail-smtpd set set to the authenticated username | |||
_ | |||
USE_BTREE inlookup used use tsearch(3) & perform binary search | |||
MAX_BTREE_COUNT limit the number of search nodes |
Environment Variable Program Purpose | |
---|---|
MYSQL_LIB All Path to indimail shared library | |
Almost all of indimail's code resides | |
in this shared library | |
_ | |
MYSQL_TABLE Name of the default indimail | |
authentication table containing active | |
users. If not set, this defaults to | |
'indimail' | |
MYSQL_INACTIVE_TABLE Name of the default indimail | |
authentication table containing inactive | |
users. If not set, this defaults to | |
'indibak' | |
ENABLE_MYSQL_ESCAPE If set, all queries to MySQL will be | |
escaped before sending to mysqld. | |
MYSQL_INIT_COMMAND | |
MYSQL_READ_DEFAULT_FILE | |
MYSQL_READ_DEFAULT_GROUP | |
MYSQL_OPT_RECONNECT any indimail Reconnect automatically after failure | |
MYSQL_OPT_READ_TIMEOUT program that Read timeout from MySQL | |
MYSQL_OPT_WRITE_TIMEOUT connects to Write timeout writing to MySQL | |
MYSQL_OPT_CONNECT_TIMEOUT MySQL Connect timeout for MySQL | |
MYSQL_OPT_PROTOCOL Set unix domain or tcp/ip sockets | |
MYSQL_SET_CLIENT_IP Set the client ip when connecting | |
CLIENT_COMPRESS Set client compress flag | |
CLIENT_INTERACTIVE Set client interactive flag | |
MYSQL_OPT_SSL_CA Certificate Authority (CA) file path | |
MYSQL_OPT_SSL_CAPATH directory that contains trusted SSL CA | |
MYSQL_OPT_SSL_CERT client public key certificate file | |
MYSQL_OPT_SSL_CIPHER permitted cipher list for SSL encryption | |
MYSQL_OPT_SSL_CRL certificate revocation lists file | |
MYSQL_OPT_SSL_CRLPATH certificate revocation lists directory | |
MYSQL_OPT_SSL_ENFORCE Enforce SSL connection | |
MYSQL_OPT_SSL_VERIFY_CERT Enable verification of the server's CN | |
MYSQL_OPT_SSL_MODE security state to use for the connection | |
SSL_MODE_DISABLED, SSL_MODE_PREFERRED, | |
SSL_MODE_REQUIRED, SSL_MODE_VERIFY_CA, | |
SSL_MODE_VERIFY_IDENTITY. | |
MYSQL_OPT_SSL_KEY client private key file | |
MYSQL_OPT_TLS_VERSION TLSv1.2, TLSv1.3. Older versions | |
have been removed |
Some of these environment variables have default values. The table below lists some of these.
Environment Variable default value | |
---|---|
BULK_MAILDIR bulk_mail | |
DEFAULT_DOMAIN set by ./configure | |
BASE_PATH /home/mail | |
MYSQL_HOST localhost | |
MYSQL_VPORT 3306 | |
MYSQL_SOCKET /tmp/mysql.sock | |
MYSQL_DATABASE indimail | |
MYSQL_TABLE indimail | |
MYSQL_INACTIVETABLE indibak | |
MYSQL_PASSWD | |
MYSQL_USER indimail | |
QMAILDIR /var/indimail | |
TCP_FILE /var/indimail/etc/tcp.smtp | |
OPEN_SMTP_CUR_FILE /var/indimail/etc/open-smtp | |
RELAY_TABLE relay | |
MCDFILE "mcdinfo" or /etc/indimail/control/mcdinfo | |
INFIFO infifo or /run/indimail/inlookup/infifo |
IndiMail uses svscan(8) to start, monitor and restart (if neccessary) all services needed for proper functioning of email server. On most Linux systems, svscan is installed as a systemd(1) service. On systems that uses the traditional init(1), svscan is installed as an entry in /etc/inittab. Some of the later systems come with upstart(8), in which case, svscan is installed in /etc/event.d. On MacOS the file indimail.plist in the directory /System/Library/LaunchDaemons is used by launchctl to start IndiMail.
The program initsvc(1) can be used to enable svscan to get automatically started on system boot. All services are installed in /service which each directory representing a service. These services are started and monitored by supervise(8). The table below gives all the service directories in /service. You can use the svps(1) program to list the status of all services.
Directory Service Description | |
---|---|
clamd clam(8) antivirus | |
freshclam freshclam(1) clam signature update service | |
qscanq qscanq(8) virus scanner | |
qmail-smtpd.25 qmail-smtpd(8) ESMTP service on port 25 | |
qmail-smtpd.587 qmail-smtpd(8) ESMTP Mssage Submission Port rfc-2476(5) | |
qmail-smtpd.366 qmail-smtpd(8) ESMTP ODMR service on port 366 | |
qmail-smtpd.465 qmail-smtpd(8) ESMTPS service on port 465 (SSL) | |
qmail-qmtpd.209 qmail-qmtpd(8) QMTP service on port 209 | |
qmail-qmqpd.628 qmail-qmqpd(8) QMTP service on port 628 | |
qmail-send.25 qmail-send(8) delivery service | |
slowq slowq-send(8) rate controlled delivery service | |
fetchmail fetchmail(1) service | |
greylist.1999 qmail-greyd(8) greylisting daemon | |
qmail-imapd.143 imapd(8) IMAP service on port 143 | |
qmail-imapd-ssl.993 imapd(8) IMAPS service on port 993 | |
proxy-imapd.4143 imapd(8) IMAP proxy on port 4143 | |
proxy-imapd-ssl.9143 imapd(8) SSL enabled IMAP proxy on port 9143 | |
qmail-pop3d.110 pop3d(8) POP3 service on port 110 | |
qmail-pop3d-ssl.995 pop3d(8) POP3S service on port 995 | |
proxy-pop3d.4110 pop3d(8) POP3 proxy on port 4110 | |
proxy-pop3d-ssl.9110 pop3d(8) SSL enabled POP3 proxy on port 9110 | |
indisrvr.4000 indisrvr(8) IndiMail administration daemon | |
inlookup.infifo InLookup(8) Service | |
pwdlookup nssd(8) Name Service Switch Daemon | |
poppass.106 password change service through poppassd protocol daemon | |
mysql.3306 mysqld(8) MySQL daemon | |
qmail-poppass.106 qmail-poppass(8) Poppassd protocol service | |
qmail-logfifo Logger service using fifologger | |
daned.1998 service for getting TLSA records | |
.svscan svscan service for logging svscan output to /var/log/svc/svscan | |
resolvconf Provide private local namespace for /etc/resolv.conf | |
dnscache DNS cache service | |
udplogger.3000 udplogger service through UDP protocol | |
mrtg MRTG service |
The services on port 25, 587, 110, 4110, 143, 4143 support STARTTLS
You can use svc(8) to start / stop individual services. To disable / enable all services, you can use the initsvc(8) command.
IndiMail attempts to be as portable as possible across different system. You can use any of the following two commands to start IndiMail on all systems
# service indimail start
or
# initsvc -on
Some indimail programs have a post execution handle. A post execution handle is a program with the same name as that of the calling program but in the directory /var/indimail/libexec. On successful completion, such programs execute the handle program and return the status of the called handle program. If the handle program is not accessible, the return status is zero. Normally, the handle program always gets executed from /var/indimail/libexec directory, but you can override the program called by setting the environment variable POST_HANDLE.
Post execution handle is useful when you want to achieve a task that is beyond the scope of IndiMail's programs. These handle help you to extend the functionality of indimail programs when adding domains, adding users, modifying a domain or modifying a user. These handles are passed arguments depending on the arguments passed to the original program. See the section on POST HANDLE in the man page for the programs mentioned below having post execution handle.
Programs that support this post execution handle are vadddomain(1), vdeldomain(1), vrenamedomain(1), vadduser(1), vdeluser(1), vrenameuser(1), vmoveuserdir(1), vpasswd(1).
The distribution includes two post execution handles vadddomain and vadduser.
IndiMail has more than 250 programs installed in /var/indimail/bin, /var/indimail/sbin.
vadddomain(1) - Add a virtual domain
[step]
vmoddomain(1) - Modify domain delivery instruction
[step]
vaddaliasdomain(1) - Add an alias domain
[step]
vrenamedomain(1) - Rename a domain
[step]
vatrn(1) - Set a domain for ODMR (RFC-2645)
[step]
vdeldomain(1) - Delete a domain
[step]
vdominfo(1) - Print domain information
[step]
printdir(1) - Print domain directory structure layout
[step]
vlimit(1) - Modify domain limits
[step]
vadduser(1) - Add a user
[step]
vuserinfo(1) - Display user information
[step]
vserverinfo(1) - Display server information for a user
[step]
vpasswd(1) - Change user password
[step]
qmail-poppass(1) - Change user password using poppassd protocol
[step]
vdeluser(1) - Delete a user
[step]
vmoduser(1) - Modify user attributes
[step]
vsetuserquota(1) - Set user disk quota
[step]
vmoveuserdir(1) - Move user's homedir
[step]
vrenameuser(1) - Rename a user
[step]
resetquota(8) - Resets user's disk usage
[step]
valias(1) - Add, modify, delete aliases
[step]
vcalias(8) - Convert .qmail to IndiMail's alias database
[step]
vcaliasrev.sh(8) - Convert IndiMail's alias database to .qmail
[step]
vgroup(1) - Add, modify, delete groups
[step]
vacation(8) - Set vacation response.
[step]
autoresponder - Rate/Time limited autoresponder for IndiMail
[step]
vsmtp(8) - Add, modify, delete SMTP routes
[step]
vipmap(1) - Map an ip address to a virtual domain
[step]
vcfilter(1) - Add, modify, delete vfilter
[step]
hostcntrl(8) - Add, modify, delete hostcntrl entries
[step]
vhostid(8) - Add, modify, delete hostid
[step]
dbinfo(8) - Display database information for all IndiMail servers
[step]
ipchange(8) - Change IP address of an IndiMail server
[step]
vbulletin(1) - Set instant bulletin for IndiMail users
[step]
vfstab(8) - Add, modify, delete fstab entries
[step]
execmysql - Execute MySQL client on an IndiMail MySQL server
[step]
vtable - Create MySQl tables using text file templates
[step]
install_tables - Create All IndiMail MySQL tables using built-in
templates
[step]
chowkidar(8) - IndiMail's Spam Guard
[step]
logmonitor(8) - Utility for real time monitoring of logs
[step]
controlsync - Utility to maintain IndiMail's control file in sync
[step]
updatefile - Update an IndiMail control file
[step]
vfilter(8) - Filter mail before delivery using vfilter mechanism
[step]
vdelivermail(8) - Deliver mails to Maildir
[step]
ismaildup(1) - Discard duplicate mails during local delivery
[step]
postdel(8) - Deliver mails to Maildir if using postfix as MTA
[step]
proxyimap(8) - IMAP proxy to connect to a server in a distributed setup
[step]
proxypop3(8) - POP3 Proxy to connect to a server in a distributed setup
[step]
vproxy(8) - Generic Proxy utility
[step]
vchkpass(8) - IndiMail's checkpassword utility
[step]
systpass(8) - checkpassword utility to authenticate against shadow
[step]
ldap-checkpwd(8) - checkpassword utility to authenticate against LDAP
[step]
pam-checkpwd - checkpassword utility to authenticate against PAM
[step]
InLookup(8) - IndiMail's name lookup daemon
[step]
inquerytest(8) - Utility to test inlookup queries
[step]
hostsync(8) - Sync uncommited entries in a IndiMail cluster
[step]
clearopensmtp(8) - remove stale IPs authorized for pop before SMTP
[step]
updaterules(8) - Rebuild tcp.smtp.cdb with IP address open for relay.
[step]
vreorg(8) - Do reorg of IndiMail's database for speed optimization
[step]
vdeloldusers(8) - Delete inactive users, trash and other housekeeping
[step]
indisrvr(8) - Secure server to run commands on an IndiMail cluster
[step]
adminclient(8) - Client for connecting to indisrvr
[step]
sslerator - TLS/SSL protocol wrapper
[step]
mgmtpass(8) - Utility for managing admin users
[step]
vpriv(8) - Set program access rights for indimail admin users.
[step]
osh(8) - Operator Shell
[step]
flash(1) - A menu shell with hotkeys and process group management
[step]
altermime - MIME encoded email pack alteration too
[step]
ripmime - email attachment / decomposition tool
[step]
mpack - pack a file in MIME format
[step]
munpack - unpack messages in MIME or split-uuencode format
[step]
nssd - Name Service Switch daemon for IndiMail
tcpserver - accepts incoming TCP connections
[step]
tcpcat - prints data from a remote host
[step]
tcpclient - creates an outgoing TCP connection
[step]
tcp-env - set up TCP-related environment variables
[step]
tcprules - compiles rules for tcpserver(1)
[step]
tcprulescheck - checks tcprules
[step]
addcr - inserts a CR ( 15) before each LF ( 12)
[step]
delcr - removes a CR ( 15) at the end of each line of input
[step]
fixcrio - inserts missing CRs at the ends of lines
[step]
argv0 - runs a program with a specified 0th argument
[step]
date@ - prints the date on a remote host
[step]
finger@ - gets user information from a remote host
[step]
http@ - gets a web page from a remote host
[step]
who@ - prints the list of active users on a remote host
[step]
mconnect - connect to a remote SMTP server
[step]
rblsmtpd - block mail from rbl listed site
[step]
recordio - record the input/output of a program
[step]
maildirserial - send a maildir through a client
[step]
maildirqmtp - send a maildir through a QMTP
[step]
maildircmd - pipe a maildir through a command
[step]
maildirsmtp - send a maildir through a SMTP
[step]
serialcmd - Pipe messages through a command
[step]
serialqmtp - Blast messages to QMTP
[step]
serialsmtp - Blast messages to SMTP
envdir - run program with env according to files in a directory
[step]
envuidgid - run program with env variables with an account's uid, gid
[step]
setuidgid - run program under a specified account's uid and gid
[step]
supervise - starts and monitors a service
[step]
svc - controls services monitored by supervise(8)
[step]
svok - checks whether supervise(8) is running
[step]
svscan - starts and monitors a collection of services
[step]
svscanboot - starts svscan(8) in the service directory
[step]
svstat - prints the status of services monitored by supervise(8)
[step]
logselect - Select portions of log
[step]
mlmatchup - collect info on messages and deliveries through multilog
[step]
matchup - collect info on messages and deliveries
[step]
multilog - qmail/indimail logging utility
[step]
multitail - watch output sent to a file
[step]
tai64n - puts a precise timestamp on each line
[step]
tai64nlocal - convert TAI64N timestamps to a human-readable format
[step]
tai64nunix - convert TAI64N timestamps to fractional secs since epoch
[step]
teepipe - copy stdin to a program and stdout
[step]
qfilelog - log messages to a single file
[step]
splogger - make entries in syslog
[step]
fghack - is an anti-backgrounding tool
[step]
pgrphack - runs a program in a separate process group
[step]
softlimit - runs another program with new resource limits
[step]
multipipe - supervise an pipeline of commands in a directory
[step]
spipe - supervise an pipeline of commands
[step]
setlock - runs another program with a file locked
[step]
readproctitle - maintains a rotated log in memory for inspection by
ps(1)
[step]
qmail-log - the qmail activity record
[step]
xqp - locate a message given its qp
[step]
xrecipient - locate all deliveries to one recipient
[step]
xsender - locate all messages from one sender
[step]
columnt - align columns in a table
822print - print a mail message
[step]
822headerok - Check if email message header is 822-compliant
[step]
822header - print the header of a mail message
[step]
822addr - extract 822 headers with values from email
[step]
822body - print the body of a mail message
[step]
822headerfilter - filter message header through a program
[step]
822bodyfilter - filter message body through a program
[step]
822date - print the date in a mail message
[step]
822field - print the value of a header field in a mail message
[step]
822fields - extract 822 field values from email headers
[step]
822received - print the Received fields in a mail message
autoresponder - Rate and time limited autoresponder for qmail/indimail
[step]
qreceipt - respond to delivery notice requests
[step]
replier - Reply to messages through external program
[step]
bouncesaying - perhaps bounce each incoming message
[step]
condredirect - perhaps redirect mail to another address
[step]
condtomaildir - Feed message to program and perhaps store message
[step]
forward - forward new mail to one or more addresses
[step]
dot-forward - read a .forward file under qmail
[step]
filterto - perhaps redirect mail to another address
[step]
except - reverse the exit code of a program
[step]
preline - prepend lines to message
[step]
rrforward - round-robin message delivery
[step]
maildirdeliver - deliver a mail message to a maildir
[step]
fastforward - forward mail according to a cdb database
[step]
ifaddr - match address
[step]
checkaddr - match address on addresses supplied on standard input
[step]
iftocc - match to or cc
[step]
iftoccfrom - match to, cc or from
[step]
checkdomain - match domain on addresses supplied on standard input
[step]
newaliases - rebuild the data base for the mail aliases file
[step]
setmaillist - create a binary mailing list
[step]
printmaillist - print the contents of a binary mailing list
[step]
setforward - create a forwarding database
[step]
printforward - print the instructions in a forwarding database
[step]
newinclude - create a binary mailing list from an :include: file
ofmipd - accept outgoing mail through OFMIP
[step]
ofmipname - build a name-address database for ofmipd
[step]
qmail-daemon - turn on qmail delivery with multiple queues
[step]
qmail-start - turn on qmail delivery
[step]
qmail-smtpd - receive mail via SMTP
[step]
swaks - SMTP transaction tester
[step]
qmail-sql - prepare data in MySQL for qmail-smtpd(8)
[step]
qmail-cdb - prepare data in cdb format for qmail-smtpd(8), and
spawn-filter(8)
[step]
recipient-cdb - prepare recipients for qmail-smtpd
[step]
qmail-qmqpc - queue a mail message via QMQP
[step]
qmail-qmqpd - receive mail via QMQP
[step]
qmail-qmtpd - receive mail via QMTP
[step]
qmail-lspawn - schedule local deliveries
[step]
qmail-local - deliver or forward a mail message
[step]
qmail-rspawn - schedule remote deliveries
[step]
qmail-remote - send mail via SMTP / ESMTP
[step]
qmail-poppass - change passwords from across the network
[step]
qmail-clean - clean up the queue directory
[step]
qmail-send - deliver mail messages from the queue
[step]
todo-proc - process todo messages from the queue
[step]
spawn-filter - Interceptor for qmail-local / qmail-remote
[step]
mailsubj - send a mail message with a subject line
[step]
predate - Prepend RFC 822 compliant Date header to data on stdin
[step]
datemail - Insert local time in RFC 822 Date header before injecting
mail
[step]
qmail-inject - inject mail in the queue
[step]
new-inject - preprocess a mail message before injecting
[step]
sendmail - an electronic mail transport agent
[step]
qmail-tcpok - clear TCP timeout tabl
[step]
qmail-tcpto - print TCP timeout table
[step]
qmail-qread - list outgoing messages, recipients, summarize queue stats
[step]
qmail-rm - Remove mails from Queue
[step]
qpq - Print qmail queue contents
[step]
queue-fix - Create/Repair qmail queue structure
[step]
qmail-queue - queue a mail message for delivery
[step]
qmail-multi - queue multiplexor and filter
[step]
qmail-qfilter - front end for qmail-multi that does filtering
[step]
qmail-nullqueue - send mail to /dev/null
[step]
qmail-dk - Domainkey sign/verify and queue message for delivery
[step]
dktest - exercise the domainkeys library
[step]
dk-filter - DK/DKIM sign/verify and queue message for deilvery
[step]
qmail-dkim - DKIM sign/verify and queue message for delivery
[step]
dkim - Exercise the DKIM library
[step]
dknewkey - Generate a new DK/DKIM key
[step]
qmail-getpw - give addresses to users
[step]
qmail-newmrh - prepare morercpthosts for qmail-smtpd
[step]
qmail-newu - prepare address assignments for qmail-lspawn
[step]
qmail-pw2u - build address assignments from a passwd file
[step]
qmailctl - Control qmail mail delvery
[step]
qmail-showctl - analyze the qmail configuration files
[step]
uacl - test qmail-smtpd access list
[step]
maildirmake - create a Maildir for incoming mail
[step]
qmaildirmake - create a Maildir for incoming mail
[step]
maildirwatch - look for new mail in a Maildir
[step]
maildir2mbox - move mail from a Maildir to an mbox
[step]
mbox2maildir - conver mbox to Maildir
[step]
greydaemon - greylisting daemon (written in perl)
[step]
qmail-greyd - greylisting daemon for IndiMail, qmail & netqmail
[step]
base64 - base64 encoding/decoding utility
[step]
qarf - Abuse Report Format Generator
[step]
[step]
qaes - Advanced Encryption Standard encryption/decryption utility
[step]
qnotify - generate Message Dispostion Notification
[step]
rrt - Respond to Return-Receipt-To request
[step]
plugtest - SMTP Plugin tester
[step]
batv - BATV tester
[step]
uacl - qmail-smtpd accesslist tester
[step]
surblfilter - qmail SURBL blocklist interface
[step]
drate - indimail domain rate control
cdbmake - write cdb by reading series of encoded records on input
[step]
cdbdump - read cdb in stdin and print database in cdbmake(1) format
[step]
cdbget - search for records in cdb
[step]
cdbgetm - search for multiple records matching a key in cdb
[step]
cdbstats - read cdb on stdin and print statistics
[step]
cdbtest - read cdb on stdin and test it
These programs have been borrowed from external Open Source Projects and they add significant value to the working of the IndiMail server.
imapd - Courier-IMAP server
[step]
pop3d - Courier-POP3 server
[step]
couriertls - Courier TLS/SSL protocol wrapper
[step]
maildirkw - set maildir message keywords
[step]
maildiracl - manage access control lists of courier-imap maildir
[step]
deliverquota - deliver to a maildir with a quota
[step]
mkimapdcert - create a test SSL certificate for IMAP over SSL
[step]
mkpop3dcert - create a test SSL certificate for POP3 over SSL
[step]
bogofilter - fast Bayesian spam filter
[step]
bogolexer - Utility program for separating email messages into tokens
[step]
bogotune - find optimum parameter settings for bogofilter
[step]
bogoupgrade - upgrades bogofilter database to current version
[step]
bogoutil - Dumps, loads, and maintains bogofilter database files
[step]
bf_compact - shell script to compact a bogofilter directory
[step]
bf_copy - shell script to copy a bogofilter working directory
[step]
bf_tar - shell script to write a tar file of a bogofilter directory to
stdout
[step]
fetchmail - fetch mail from a POP, IMAP, ETRN, or ODMR-capable server
[step]
fetchmailconf - configure fetchmailrc
[step]
freshclam - update clamd virus database
[step]
clamd - an anti-virus daemon
[step]
qscanq - qmail virus scanner
[step]
run-cleanq - request cleanq to be run
[step]
cleanq - clean up qscanq work directory
[step]
sigtool - signature and database management tool
fortune - print a random, hopefully interesting, adage
[step]
unstr - dump strings in pointer order
[step]
strfile - create a random access file for storing strings
[step]
randstr - fetch a random text string from a specified file
Apart from the above, IndiMail provides many more programs which can work with qmail without needing IndiMail to be installed. The list of such programs not listed here are being compiled and will be available in the near future.
There are four Mailing Lists for IndiMail
1. indimail-support - mailing list for support
[email protected]
Subscribe for Support at https://lists.sourceforge.net/lists/listinfo/indimail-support. Old discussions can be seen at https://sourceforge.net/mailarchive/forum.php?forum_name=indimail-support
2. indimail-devel - mailing list to discuss IndiMail development
[email protected]
Subscribe at https://lists.sourceforge.net/lists/listinfo/indimail-devel Old discussions can be seen at https://sourceforge.net/mailarchive/forum.php?forum_name=indimail-devel
3. indimail-announce - List to announce New Releases or patches
Subscribe at http://groups.google.com/group/indimail
4. Archive at Google - http://groups.google.com/group/indimail
This groups acts as a remote archive for indimail-support and
indimail-devel.
There is also a Project Tracker for IndiMail (Bugs, Feature Requests, Patches, Support Requests) at http://sourceforge.net/tracker/?group_id=230686
You can also get titbits about IndiMail at
Tips&Tricks - http://indimail.blogspot.com
twitter - http://twitter.com/indimail
facebook - http://www.facebook.com/pages/indimail/88063516703?\_fb_noscript=1
sourceforge - https://sourceforge.net/apps/laconica/indimail/
IndiMail provides the package in both source and binary forms. Installation from the source requires you to download other packages from the respective websites apart from the indimail core package. The indimail package contains a patch directory which allows you to add features to qmail, ucspi-tcp, courier-imap, etc. Details for building IndiMail from source can be read in the INSTALL document provided with the source package. Many users may find this complicated and hence binary packages are also provided which can be downloaded from the RPM repo mentioned below.
Source Download - http://sourceforge.net/projects/indimail/
Git Repository - http://indimail.git.sourceforge.net/
Stable RPM Repo - http://download.opensuse.org/repositories/home:/indimail/
Raw RPM Repo - http://download.opensuse.org/repositories/home:/mbhangui/
IndiMail uses openSUSE Build service to build the RPM whenever there is a new release. Currently, the list of supported distributions for IndiMail RPM (for both 32 and 64 bit) are
* Arch Linux
* SUSE o openSUSE_Leap_15.3 o openSUSE_Leap_15.4 o openSUSE_Tumbleweed o SUSE Linux Enterprise 12 o SUSE Linux Enterprise 12 SP1 o SUSE Linux Enterprise 12 SP2 o SUSE Linux Enterprise 12 SP3 o SUSE Linux Enterprise 12 SP4 o SUSE Linux Enterprise 12 SP5 o SUSE Linux Enterprise 15 o SUSE Linux Enterprise 15 SP1 o SUSE Linux Enterprise 15 SP2 o SUSE Linux Enterprise 15 SP3 o SUSE Linux Enterprise 15 SP4
* Red Hat o Fedora 36 o Fedora 37 o Red Hat Enterprise Linux 7 o Scientific Linux 7 o CentOS 7 o CentOS 8 o CentOS 8 Stream o CentOS 9 Stream o AlmaLinux 8 o AlmaLinux 9
* Debian o Debian 10.0 o Debian 11.0
* Ubuntu o Ubuntu 18.04 o Ubuntu 20.04 o Ubuntu 22.04
You can also use yum(8) to install IndiMail by downloading the repo file and importing the RPM key. e.g. for Fedora 17 one could do the following
# wget -O /etc/yum.repos.d/indimail.repo \
http://download.opensuse.org/repositories/home:/indimail/Fedora_17/home:indimail.repo
# rpm --import \
http://download.opensuse.org/repositories/home:/indimail/Fedora_17/repodata/repomd.xml.key
# yum install indimail.x86_64
or
# yum install indimail.i386
indimail-env(5) indimail-services(7), dbinfo(8), inlookup(8), pam-multi(8), vhostid(8), vsmtp(8), vreorg(8), hostcntrl(1) vadduser(1), vdeluser(1), initsvc(1), sslerator(1) svscan(8), supervise(8), qmailctl(8), svctool(8), svps(1), systemd(1) autoresponder(1), rpm(8) yum(8) rfc-2645(5)