Setting up postfix with virtual domains: Difference between revisions

From Alpine Linux
(This document is only about postfix (with virtual domains) on alpine)
 
m (→‎Initial Setup: correcting page link)
 
(8 intermediate revisions by 5 users not shown)
Line 2: Line 2:


== General ==
== General ==
The idea is to create a postfix config to host multiple maildomains.<BR>
The idea is to create a {{Pkg|postfix}} config to host multiple maildomains.<BR>
I want to document both how it's set up and how it's maintained
I want to document both how it's set up and how it's maintained.


When you are done with postfix installation you could proceed and install (depending on your needs)
When you are done with postfix installation you could proceed and install (depending on your needs)
Line 10: Line 10:
* dovecot
* dovecot
* Other email related applications
* Other email related applications
Have a look at [[Hosting_services_on_Alpine#Mail]] for various alternatives
Have a look at [[Hosting_services_on_Alpine#Mail]] for various alternatives and instructions.


== Initial Setup ==
== Initial Setup ==
Burn [http://dl-3.alpinelinux.org/alpine/v1.9/iso/alpine-1.9.0_alpha10-i386.iso alpine_1.9alpha10] on a CD and boot the machine.<BR>
Burn {{Latest_1.9_alpine_iso-filename}} (or higher) on a CD and boot the machine.<BR>
'''''Suggestion:''' Follow notes on [[Setting_up_a_ssh-server]] to be able to remotely administer this box.''
'''''Suggestion:''' Follow notes on [[Setting up a SSH server]] to be able to remotely administer this box.''


== Postfix ==
== Postfix ==
Line 36: Line 36:


==== Create missing dirs ====
==== Create missing dirs ====
Seems we are missing ''/var/spool/mail'' and ''/var/mail'' so we need to create those
Seems we are missing ''/var/spool/mail'' so we need to create it
  mkdir /var/spool/mail
  mkdir /var/spool/mail
ln -s /var/spool/mail /var/mail


==== Create virtual maildir ====
==== Create virtual maildir ====
In the upcoming configuration we are going to specify ''/var/mail/vhosts/'' as the ''virtual_mailbox_base'' so we need to create it.
In the upcoming configuration we are going to specify ''/var/spool/mail/vhosts/'' as the ''virtual_mailbox_base'' so we need to create it.
  mkdir /var/mail/vhosts
  mkdir /var/spool/mail/vhosts
And we need to give permissions to our ''vmail'' user so he can read/write in this folder.
And we need to give permissions to our ''vmail'' user so he can read/write in this folder.
  chown vmail:vmail /var/mail/vhosts
  chown vmail:postdrop /var/spool/mail/vhosts


=== Configuration ===
=== Configuration ===
For now I just dump whatever I have.
'''FIXME:''' The following configuration needs some more work''
I will clean up these notes soon.


==== /etc/postfix/main.cf ====
==== /etc/postfix/main.cf ====
Line 67: Line 65:


## The following is added to the config ##
## The following is added to the config ##
local_transport = virtual
virtual_mailbox_domains = example.net
virtual_mailbox_domains = example.net
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_base = /var/spool/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_minimum_uid = 100
Line 74: Line 73:
virtual_gid_maps = static:1001
virtual_gid_maps = static:1001
virtual_alias_maps = hash:/etc/postfix/valias
virtual_alias_maps = hash:/etc/postfix/valias
smtpd_helo_required = yes
disable_vrfy_command = yes
smtpd_recipient_restrictions =
        reject_unauth_pipelining,
        permit_sasl_authenticated,
        permit_mynetworks,
        reject_invalid_hostname, reject_non_fqdn_hostname,
        reject_non_fqdn_sender, reject_non_fqdn_recipient,
        reject_unknown_sender_domain, reject_unknown_recipient_domain,
        reject_unauth_destination,
        permit
smtpd_data_restrictions = reject_unauth_pipelining, permit
</pre>
</pre>


Line 104: Line 116:
Personally I use to tail the logfile while debugging
Personally I use to tail the logfile while debugging
  tail -f /var/log/messages
  tail -f /var/log/messages
=== Add/Remove mailboxes ===
In the above examples we used ''/etc/postfix/vmailbox'' to store our list of mailboxes.<BR>
To add/remove a mailbox, you need to edit this file and then rebuild the DB.
vi /etc/postfix/vmailbox
postmap /etc/postfix/vmailbox
Now we have done our re-configuration and we want postfix to start using the new settings.
postfix reload
[[Category:Mail]]

Latest revision as of 09:48, 25 April 2023

Postfix on 1.9

General

The idea is to create a postfix config to host multiple maildomains.
I want to document both how it's set up and how it's maintained.

When you are done with postfix installation you could proceed and install (depending on your needs)

  • clamav
  • gross
  • dovecot
  • Other email related applications

Have a look at Hosting_services_on_Alpine#Mail for various alternatives and instructions.

Initial Setup

Burn alpine-1.9.3-x86.iso (or higher) on a CD and boot the machine.
Suggestion: Follow notes on Setting up a SSH server to be able to remotely administer this box.

Postfix

Install

apk_add postfix

Prepare

We need to create a user on this system that has rights to read/write mail on you system.
Let's call this user vmail (you can choose another name if you like).
You will get prompted for a password.

adduser vmail

Now we need to know what gid/uid that user got.
Take notes on the numbers, you will need the in the upcoming configuration (in my case I got uid/gid '1001').

grep vmail /etc/passwd

This newly-created user will need permissions in the mail group.
Edit /etc/group and add vmail to the postdrop group. Se example below:

postdrop:x:208:vmail

Create missing dirs

Seems we are missing /var/spool/mail so we need to create it

mkdir /var/spool/mail

Create virtual maildir

In the upcoming configuration we are going to specify /var/spool/mail/vhosts/ as the virtual_mailbox_base so we need to create it.

mkdir /var/spool/mail/vhosts

And we need to give permissions to our vmail user so he can read/write in this folder.

chown vmail:postdrop /var/spool/mail/vhosts

Configuration

FIXME: The following configuration needs some more work

/etc/postfix/main.cf

These are the variables that varies from the defaults

## These settings differers from the default config ##
soft_bounce = yes   # For testing
myhostname = mail.example.net
mydomain = example.net
myorigin = $mydomain
mydestination = localhost, mail.localdomain, localhost.localdomain, localdomain   # See 'virtual_mailbox_domains' for more information
mynetworks = 192.168.10.0/24, 127.0.0.0/8
relayhost =
in_flow_delay = 1s
home_mailbox = Maildir/
mail_spool_directory = /var/spool/mail
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)

## The following is added to the config ##
local_transport = virtual
virtual_mailbox_domains = example.net
virtual_mailbox_base = /var/spool/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001
virtual_alias_maps = hash:/etc/postfix/valias

smtpd_helo_required = yes
disable_vrfy_command = yes
smtpd_recipient_restrictions =
        reject_unauth_pipelining,
        permit_sasl_authenticated,
        permit_mynetworks,
        reject_invalid_hostname, reject_non_fqdn_hostname,
        reject_non_fqdn_sender, reject_non_fqdn_recipient,
        reject_unknown_sender_domain, reject_unknown_recipient_domain,
        reject_unauth_destination, 
        permit
smtpd_data_restrictions = reject_unauth_pipelining, permit

/etc/postfix/valias

postmaster@example.net user1@example.net
hostmaster@example.net user2@example.net

/etc/postfix/vmailbox

user1@example.net      example.net/user1/
user2@example.net      example.net/user2/
@example.net           example.net/catchall #everyone else doesn't match rule above

Create DB's

Once you created the above config-files, you need to make generate some DB's

postmap /etc/postfix/vmailbox
postmap /etc/postfix/valias

I am not 100% if the next command is needed, but I think that you need to create the 'aliases' DB.

postmap /etc/postfix/aliases

Start postfix

It's time to start. Hopefully it works!

/etc/init.d/postfix start

Debugging

In case something goes wrong you should have a look in your syslog.
Personally I use to tail the logfile while debugging

tail -f /var/log/messages

Add/Remove mailboxes

In the above examples we used /etc/postfix/vmailbox to store our list of mailboxes.
To add/remove a mailbox, you need to edit this file and then rebuild the DB.

vi /etc/postfix/vmailbox
postmap /etc/postfix/vmailbox

Now we have done our re-configuration and we want postfix to start using the new settings.

postfix reload