-
Notifications
You must be signed in to change notification settings - Fork 179
Linuxconf
Back in the old days, in the long long ago, back before Google existed there was a configuration utility that shipped with Redhat and several other distributions called Linuxconf. The product is still supported today and is still excelent. Linuxconf included a virtual email server that worked with Sendmail and UW-IMAP. It used some custom extensions to accomplish virtual delivery and POP.
Eventually a patch was written to UW-IMAP called Virtual IMAP but the author hasn't updated it in years. However receintly Dovecot has added Linuxconf compatibility and here is the Dovecot Configuration.
Linuxconf is still in use today because it provides an HTML interface for managing virtual users and aliases and allows users to change their own passwords. It also controls what UNIX users are allowed to manage which virtual domains. And it has a text mode interface allowing quick and easy configuration form an SSH session.
Linuxconf had a really simple way of doing virtual domains. They use a passwd/shadow type file structure that is just like your passwd/shadow files except they had one for each separate domain as follows:
/etc/vmail/passwd.domain1.com
/etc/vmail/shadow.domain1.com
/etc/vmail/aliases.domain1.com
/etc/vmail/passwd.domain2.com
/etc/vmail/shadow.domain2.com
/etc/vmail/aliases.domain2.com
The mail is stored in a directory structure in MBOX format. Assuning the login name passed to Dovecot is [[email protected]](mailto:[email protected]), for IMAP folders the directory structure is:
/vhome/domain.com/home/user
The INBOX is stored as follows:
/var/spool/vmail/domain.com/user
The Linuxconf virtual email system is actually pretty good especially if you are merging several existing single domain servers into one virtual domain servers. All you have to do is copy over your existing passwd/shadow files into the /etc/vmail folder and rename them. You will need to do some editing on the passwd file to point to where you wish to store your email.
Exim works very well with this configuration.
# Virtual Aliases
virtual_alias:
driver = redirect
allow_defer
allow_fail
data = ${expand:${lookup{$local_part}lsearch*{/etc/vmail/aliases.$domain} } }
domains = +virtual_local_domains
file_transport = address_file
pipe_transport = special_pipe
qualify_preserve_domain
user = mail
require_files = /etc/vmail/aliases.$domain
# Virtual Localuser
virtual_localuser:
driver = accept
condition = ${lookup {$local_part} lsearch {/etc/vmail/passwd.$domain} {$value}}
domains = +virtual_local_domains
require_files = /etc/vmail/passwd.$domain
transport = virtual_local_delivery
###################################################
# This router matches virtual local user imap folders.
# Folders are addresses folder-name@domain
virtual_localuser_folder:
driver = accept
local_part_suffix=-*
condition = ${lookup {$local_part} lsearch {/etc/vmail/passwd.$domain} {$value}}
domains = +virtual_local_domains
require_files = /etc/vmail/passwd.$domain:\
/vhome/$domain/home/$local_part/${sg {$local_part_suffix}{-}{}}
retry_use_local_part
transport = virtual_local_folder_delivery
user = root
virtual_local_delivery:
driver = appendfile
allow_symlink
create_directory
delivery_date_add
directory_mode = 600
envelope_to_add
# file = /vhome/$domain/home/$local_part/INBOX
file = /var/spool/vmail/$domain/$local_part
group = mail
mode = 600
return_path_add
user = ${extract{2} {:} {${lookup {$local_part} lsearch {/etc/vmail/passwd.$domain} {$value} } } }
# This allows for direct folder delivery. A very nice trick to add. If a message is
# addressed to [email protected] then it will be delivered into the users imap folder.
virtual_local_folder_delivery:
driver = appendfile
allow_symlink
create_directory
delivery_date_add
directory_mode = 600
envelope_to_add
file = /vhome/$domain/home/$local_part/${sg {$local_part_suffix}{-}{}}
group = mail
mode = 600
return_path_add
user = ${extract{2} {:} {${lookup {$local_part} lsearch {/etc/vmail/passwd.$domain} {$value} } } }
More information about Linuxconf can be found at their `Home Site`_.