Attention
Check out the lightweight on-premises email archiving software developed by iRedMail team: Spider Email Archiver.
Warning
Since iRedMail-0.9.3, we have per-user alias address support, that means mail
user john.smith@domain.com can have additional email addresses like
john@domain.com, js@domain.com and more, all emails sent to these addresses
will be delivered to same mailbox (john.smith@domain.com). With per-user
alias address support, you don't need to create separated mail alias accounts
anymore.
You can manage per-user alias addresses with iRedAdmin-Pro in user profile page, under tab "Aliases".

Add additional email addresses sales@domain.com, bill@domain.com for
existing user john@domain.com:
sql> USE vmail;
sql> INSERT INTO alias (address, goto, alias_to, is_alias, domain)
                VALUES ('sales@domain.com', 'john@domain.com', 'john@domain.com', 1, 'domain.com');
sql> INSERT INTO alias (address, goto, alias_to, is_alias, domain)
                VALUES ('bill@domain.com', 'john@domain.com', 'john@domain.com', 1, 'domain.com');
sales@domain.com and bill@domain.com are NOT existing mail user accounts.alias.goto and alias.alias_to must be the same -- email address of the existing mail user.bill@domain.com could be an email address which belongs to your alias domain.For LDAP backend, per-user alias addresses are stored in LDAP attribute
shadowAddress of user object, and attribute/value pair
enabledService=shadowaddress is required. For example:
dn: mail=john@domain.com,ou=Users,domainName=domain.com,o=domains,dc=xxx,dc=xxx
enabledService: shadowaddress
shadowAddress: sales@domain.com
shadowAddress: bill@domain.com
...