Setting up postfix with virtual domains: Difference between revisions
(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 | Burn {{Latest_1.9_alpine_iso-filename}} (or higher) on a CD and boot the machine.<BR> | ||
'''''Suggestion:''' Follow notes on [[ | '''''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 | Seems we are missing ''/var/spool/mail'' so we need to create it | ||
mkdir /var/spool/mail | mkdir /var/spool/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: | chown vmail:postdrop /var/spool/mail/vhosts | ||
=== Configuration === | === Configuration === | ||
'''FIXME:''' The following configuration needs some more work'' | |||
==== /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