Messaging Platform based on indimail-mta for MTA (modified qmail), IndiMail-VirtualDomains for Virtual Domains, Courier-IMAP for IMAP/POP3
- Look at README-indimail for details on IndiMail, indimail-mta. indimail needs indimail-mta to be installed, instructions for installing the same are included below. You can also read README for details specific to installing indimail-mta alone.
- Look at README-CLUSTER for details on setting up an IndiMail Cluster
- Look at INSTALL for very detailed Source Installation instructions. You may not need that if you follow instructions below in this document itself.
- Look at INSTALL-MINI for instructions on setting up an MINI Indimail Installation which uses QMQP protocol.
- Look at INSTALL-MYSQL for instructions on configuring a MySQL/MariaDB server for IndiMail.
- Look at INSTALL-RPM for instructions on setting up IndiMail using RPM or Debian packages
- Look at Quick-INSTALL for instructions on installation and setup of an IndiMail server.
The steps below give instructions on building from source. If you need to deploy IndiMail on multiple hosts, it is better to create a set of RPM / Deb binary packages. Once generated, the same package can be deployed on multiple hosts. To generate RPM packages for all components refer to Binary Packages
You can also use docker / podman images to deploy indimail. Look at the chapter # Docker / Podman Repository
below on how to do that. The big advantage of using a docker / podman image is you can change your configuration with the docker commit ..
or podman commit
to save your entire build and deploy the exact configuration on multiple hosts.
Doing a source build can be daunting for many. You can always use the pre-built binaries from the DNF / YUM / APT repositories given in the chapter # Binary Builds on openSUSE Build Service
towards the end of this document.
Doing a source build requires you to have all the development packages installed. Linux distributions are known to be crazy. You will have different package names for different distirbutions. e.g.
db-devel, libdb-devel, db4-devel on different systems, just to get Berkeley db installed. There is an easy way out to find out what your distribution needs.
- For RPM based distribtions, locate your .spec file (e.g. indimail.spec in indimail-virtualdomains/indimail-x directory, libqmail/libqmail.spec). Open the RPM spec file and look for
BuildRequires
. This will tell you what you require for your distribution. If there is a specific version of development package required, you will find%if %else
statements. Use dnf / yum / zypper to install your development package. - For debian based distribution, locate your debian subdirectory (e.g. indimail-virtualdomains/indimail-x/debian, libqmail/debian). In this directory you will find files with
.dsc
extension. Look at the line havingBuild-Depends
. Useapt-get install package
to install the package. If your debian distribution has few libraries different than the default, you will find a.dsc
filename with a name corresponding to your distribution. (e.g. indimail-Debain_10.dsc)
(check version in libqmail/conf-version)
$ cd /usr/local/src
$ git clone https://github.com/mbhangui/libqmail.git
$ cd /usr/local/src/libqmail
$ ./default.configure
$ make
$ sudo make install-strip
$ cd /usr/local/src
$ git clone https://github.com/mbhangui/indimail-virtualdomains.git
$ git clone https://github.com/mbhangui/indimail-mta.git
(check version in indimail-mta/libdkim-x/conf-version)
$ cd /usr/local/src/indimail-mta/libdkim-x
$ ./default.configure
$ make
$ sudo make -s install-strip
(check version in indimail-mta/libsrs2-x/conf-version)
$ cd /usr/local/src/indimail-mta/libsrs2-x
$ ./default.configure
$ make
$ sudo make install-strip
(check version in indimail-mta/ucspi-tcp-x/conf-version)
$ cd /usr/local/src/indimail-mta/ucspi-tcp-x
$ make
$ sudo make install-strip
(check version in indimail-virtualdomains/bogofilter-x/conf-version)
$ cd /usr/local/src/indimail-virtualdomains/bogofilter-x
$ ./default.configure
$ make
$ sudo make install-strip
$ cd /usr/local/src/indimail-virtualdomains/bogofilter-wordlist-1.0
$ ./default.configure
$ make
$ sudo make install-strip
You can refer to the detailed installation for indimail-mta here
But in short you can install indimail-mta by follow the steps below
(check version in indimail-mta/indimail-mta-x/conf-version)
$ cd /usr/local/src/indimail-mta/indimail-mta-x
$ ./default.configure
$ make
$ sudo make install-strip
$ sudo sh ./svctool --config=users --nolog
Rquired for Virtual Domains function.
(check version in indimail-virtualdomains/indimail-x/conf-version)
$ cd /usr/local/src/indimail-virtualdomains/indimail-x
$ ./default.configure
$ make
$ sudo make install-strip
Required for IMAP, POP3 to retrieve your mails
(check version in indimail-virtualdomains/courier-imap-x/conf-version)
$ cd /usr/local/src/indimail-virtualdomains/courier-imap-x
$ ./default.configure
$ sudo make install-strip
Optional. Required only if you want fetchmail to retrieve your mails
$ cd /usr/local/src/indimail-virtualdomans/fetchmail-x
$ ./default.configure
$ make
$ sudo make install-strip
Optional component. Required only if you require a Name Service Switch to authenticate from a MySQL db (e.g. for authenticated SMTP)
(check version in indimail-virtualdomains/nssd-x/conf-version)
$ cd /usr/local/src/indimail-virtualdomains/nssd-x
$ ./default.configure
$ make
$ sudo make install-strip
Optional. Required only if you require PAM authentication for authenticated SMTP or extra PAM other than /etc/shadow authentication for IMAP / POP3
(check version in indimail-virtualdomains/pam-multi-x/conf-version)
$ cd /usr/local/src/indimail-virtualdomains/pam-multi-x
$ ./default.configure
$ make
$ sudo make install-strip
Optional. Required only if you want altermime to add content to your emails before delivery. e.g. adding disclaimers
$ cd /usr/local/src/indimail-virtualdomans/altermime-x
$ ./default.configure
$ make
$ sudo make install-strip
Optional. Required only if you want extract attachments from your emails
$ cd /usr/local/src/indimail-virtualdomans/ripmime-x
$ ./default.configure
$ make
$ sudo make install-strip
Optional. Required only if you want to pack a zip file and attach it to your email.
$ cd /usr/local/src/indimail-virtualdomans/mpack-x
$ ./default.configure
$ make
$ sudo make install-strip
Optional. Required only if you want a configurable ncurses based menu system to configure a system for administering emails using a dumb terminal
$ cd /usr/local/src/indimail-virtualdomans/flash-x
$ ./default.configure
$ make
$ sudo make install-strip
Optional. Required only if you want fortune cookies to be sent out in your outgoing emails.
$ cd /usr/local/src/indimail-virtualdomans/fortune-x
$ ./default.configure
$ make
$ sudo make install-strip
Required for a web administration front-end for administering your indimail-users and ezmlm mailing lists. You can do tasks like adding, deleting, modifying users, change user password, update quota, set vacation messages, etc.
$ cd /usr/local/src/indimail-virtualdomains/iwebadmin-x
$ ./default.configure
$ make
$ sudo make install-strip
You are here because you decided to do a complete source installation. If you use source installation method, you need to setup various configuration and services. You can configure indimail/indimail-mta using /usr/sbin/svctool. svctool
is a general purpose utility to configure indimail/indimail-mta services.
You can also run the script create_services
which invokes svctool to setup few default services to start a fully configured system. create_services
will also put a systemd unit file svscan.service
in /lib/systemd/system
.
$ cd /usr/local/src/indimail-mta/indimail-mta-x
$ sudo sh ./create_services --servicedir=/services --mysqlPrefix=/usr
$ sudo systemctl start svscan
or
$ sudo service svscan start
or
$ /etc/init.d/svscan start
or
$ /usr/bin/qmailctl start
If you need to have indimail on multiple machines, you can build binary packages once and install the same package on multiple machines. The other big advantage of using a binary build is that the binary installation will give you fully functional, configured system using your hostname for defaults. You can always change these configuration files in /etc/indimail to cater to your requirements later. With a binary build, you don't need to run the create_services
command. To generate RPM packages locally for all components refer to Binary Packages
You can also download pre-built binary packages from openSUSE Build Service, described in the chapter '# Binary Builds on openSUSE Build Service`.
You can get binary RPM / Debian packages at
If you want to use DNF / YUM / apt-get, the corresponding install instructions for the two repositories, depending on whether you want to install a stable or an experimental release, are
NOTE: Once you have setup your DNF / YUM / apt-get repo, you an also decide to install the additional software
- indimail-access - IMAP/POP3 & fetchmail for mail retreival
- indimail-auth (nssd - providing Name Service Switch and pam-multi providing multiple PAM modules for flexible, configurable authentication methods)
- indimail-spamfilter - SPAM filter capabillity using bogofilter - https://bogofilter.sourceforge.io
- indimail-utils (Multiple utilities that can work with indimail - altermime, ripMIME, mpack, fortune and flash - customizable menu based admin interface)
Currently, the list of supported distributions for IndiMail is
* SUSE
o openSUSE_Leap_15.0
o openSUSE_Leap_15.1
o openSUSE_Leap_15.2
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
* Red Hat
o Fedora 32
o Fedora 31
o Red Hat Enterprise Linux 6
o Red Hat Enterprise Linux 7
o CentOS 6
o CentOS 7
* Debian
o Debian 8.0
o Debian 9.0
o Debian 10.0
o Ubuntu 16.04
o Ubuntu 17.04
o Ubuntu 18.04
o Ubuntu 19.04
o Ubuntu 19.10
o Ubuntu 20.04
The docker repository can be used to pull docker/podman images for indimail.
For latest details refer to README
IndiMail has an IRC channel ##indimail and ##indimail
There are four Mailing Lists for IndiMail
- indimail-support - You can subscribe for Support here. You can mail indimail-support for support Old discussions can be seen here
- indimail-devel - You can subscribe here. You can mail indimail-devel for development activities. Old discussions can be seen here
- indimail-announce - This is only meant for announcement of New Releases or patches. You can subscribe here
- Archive at Google Groups. 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)