Skip to content

indimail/indimail-virtualdomains

Repository files navigation

Installation (source and binary)

indimail Introduction

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.

Source Installation

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 having Build-Depends. Use apt-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)

Compile libqmail

(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

Download indimail, indimail-mta and components

$ cd /usr/local/src
$ git clone https://github.com/mbhangui/indimail-virtualdomains.git
$ git clone https://github.com/mbhangui/indimail-mta.git

Compile libdkim-x (with dynamic libaries)

(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

Compile libsrs2-x (with dynamic libaries)

(check version in indimail-mta/libsrs2-x/conf-version)

$ cd /usr/local/src/indimail-mta/libsrs2-x
$ ./default.configure
$ make
$ sudo make install-strip

Build ucspi-tcp

(check version in indimail-mta/ucspi-tcp-x/conf-version)

$ cd /usr/local/src/indimail-mta/ucspi-tcp-x
$ make
$ sudo make install-strip

Build bogofilter

(check version in indimail-virtualdomains/bogofilter-x/conf-version)

$ cd /usr/local/src/indimail-virtualdomains/bogofilter-x
$ ./default.configure
$ make
$ sudo make install-strip

Build bogofilter-wordlist

$ cd /usr/local/src/indimail-virtualdomains/bogofilter-wordlist-1.0
$ ./default.configure
$ make
$ sudo make install-strip

Build indimail-mta-x

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

Build indimail

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

Build courier-imap

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

Build fetchmail

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

Build nssd

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

Build pam-multi

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

Build altermime

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

Build ripmime

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

Build mpack

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

Build flash

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

Build fortune

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

Build iwebadmin

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

Setup & Configuration

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

Start Services

$ sudo systemctl start svscan
or
$ sudo service svscan start
or
$ /etc/init.d/svscan start
or
$ /usr/bin/qmailctl start

Binary Packages Build

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`.

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

  1. indimail-access - IMAP/POP3 & fetchmail for mail retreival
  2. indimail-auth (nssd - providing Name Service Switch and pam-multi providing multiple PAM modules for flexible, configurable authentication methods)
  3. indimail-spamfilter - SPAM filter capabillity using bogofilter - https://bogofilter.sourceforge.io
  4. 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

Docker / Podman Repository

The docker repository can be used to pull docker/podman images for indimail.

For latest details refer to README

SUPPORT INFORMATION

IRC

IndiMail has an IRC channel ##indimail and ##indimail

Mailing list

There are four Mailing Lists for IndiMail

  1. indimail-support - You can subscribe for Support here. You can mail indimail-support for support Old discussions can be seen here
  2. indimail-devel - You can subscribe here. You can mail indimail-devel for development activities. Old discussions can be seen here
  3. indimail-announce - This is only meant for announcement of New Releases or patches. You can subscribe here
  4. 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)