[2] Postfix – Instalacja

4 lutego 2023 Wyłączono przez Adam [zicherka] Nogły

Instalacja

Jak zwykle w środowisku *NIX, możliwe jest instalowanie z pakietów, lub kompilacja ze źródeł. Najpierw pokażę jak skonfigurować, skompilować, a następnie zainstalować Postfix’a ze źródeł.

root@vfbsd01:~ # cd /usr/ports/mail/postfix
root@vfbsd01:/usr/ports/mail/postfix # make all install clean

Upewnij się, że zaznaczyłeś BDB, PCRE2, TLS. Jednocześnie nie jest zaznaczone INST_BASE. Możesz zaznaczyć w czasie konfiguracji opcję TEST, jeśli będziesz chciał przeprowadzić testy obciążeniowe serwera pocztowego (opisane poniżej).

Możliwa jest także instalacja z pakietów, którą można wykonać w następujący sposób:

root@vfbsd01:~ # pkg install postfix-sasl

Kolejną rzeczą jest aktywacja Postfix’a jako programu pocztowego.

root@vfbsd01:~ # mv /etc/mail/mailer.conf /etc/mail/mailer.conf.old
root@vfbsd01:~ # install -m 0644 /usr/local/share/postfix/mailer.conf.postfix /etc/mail/mailer.conf

Następnie włączymy Postfix’a i Dovecot’a aby uruchamiały się w trakcie startu systemu.

root@vfbsd01:~ # mcedit /etc/rc.conf
# dodaj na końcu
postfix_enable="YES"
dovecot_enable="YES"

Konfiguracja

Pliki konfiguracyjne dla Postfixa znajdują się w [/usr/local/etc/postfix]. Istnieją dwa główne pliki: [main.cf] i [master.cf]. Zrób kopię obu tych plików.

root@vfbsd01:~ # cd /usr/local/etc/postfix
root@vfbsd01:/usr/local/etc/postfix # cp main.cf main.cf.old
root@vfbsd01:/usr/local/etc/postfix # cp master.cf master.cf.old

Utwórz użytkownika, który będzie miał dostęp do skrzynek pocztowych i uzyskaj jego UID i GID.

root@vfbsd01:~ # pw groupadd vpostfix && pw useradd vpostfix -g vpostfix -s /usr/sbin/nologin -c "Virtual Postfix user" -d /var/empty
root@vfbsd01:~ # grep vpostfix /etc/passwd
# w moim przypadku dane wyjściowe były takie, co oznacza, że UID to 1002, a GID to 1002.
vpostfix:*:1002:1002:Virtual Postfix user:/var/empty:/usr/sbin/nologin

Przystąpimy teraz do edycji pliku konfiguracyjnego [main.cf].

root@vfbsd01:~ # mcedit /usr/local/etc/postfix/main.cf
# linia 100: dodaj
# FQDN mailbsd.zicher.lab dodano do pliku stref jako CNAME dla vfbsd01.zicher.lab
myhostname = mailbsd.zicher.lab
# linia 108: dodaj
mydomain = zicher.lab
# linia 125: dodaj
myorigin = $mydomain
# linia 139: odkomentuj
inet_interfaces = all
# linia 445: odkomentuj
home_mailbox = Maildir/
# dodaj na końcu
virtual_mailbox_domains = /usr/local/etc/postfix/virtual_domains
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = hash:/usr/local/etc/postfix/vmailbox
# wprowadź poprawne numery UID:GID
virtual_minimum_uid = 1002
virtual_uid_maps = static:1002
virtual_gid_maps = static:1002
virtual_alias_maps = hash:/usr/local/etc/postfix/virtual

Teraz utworzymy nowy plik o nazwie /usr/local/etc/postfix/virtual_domains. To jest plik, w którym zostaną wyświetlone wszystkie Nasze domeny. Oczywiście, musimy upewnić się, że rekordy MX naszych domen wskazują adres IP serwera FreeBSD.

root@vfbsd01:~ # cd /usr/local/etc/postfix/
root@vfbsd01:/usr/local/etc/postfix # mcedit virtual_domains
# stwórz nowy
# każda linia to jedna domena
zicher.lab
zicher-dwa.test
zicher-trzy.com

Utworzymy teraz katalog poczty, podkatalogi dla domen i nadaj im odpowiednie uprawnienia. Tutaj będzie przechowywana poczta dla wszystkich domen wirtualnych.

root@vfbsd01:~ # mkdir /var/mail/vhosts
root@vfbsd01:~ # chgrp -R vpostfix /var/mail
root@vfbsd01:~ # cd /var/mail/vhosts
root@vfbsd01:/var/mail/vhosts # mkdir zicher.lab
root@vfbsd01:/var/mail/vhosts # mkdir zicher-dwa.test
root@vfbsd01:/var/mail/vhosts # mkdir zicher-trzy.com
root@vfbsd01:/var/mail/vhosts # cd ..
root@vfbsd01:/var/mail # chown -R vpostfix:vpostfix vhosts

Gdy to zrobisz, postfix automatycznie utworzy katalogi [Maildir] i przypisze odpowiednie uprawnienia, gdy wiadomość e-mail trafi do tych miejsc docelowych. Na koniec utwórz plik [/usr/local/etc/postfix/vmailbox] i dodaj wszystkich użytkowników, którzy będą otrzymywać e-maile. Oto przykład:

root@vfbsd01:~ # mcedit /usr/local/etc/postfix/vmailbox
# stwórz nowy
adam@zicher.lab zicher.lab/adam/
bogdan@zicher.lab zicher.lab/bogdan/
fbsduser@zicher.lab zicher.lab/fbsduser/
@zicher-dwa.test zicher-dwa.test/catch-all/
user@zicher-trzy.com zicher-trzy.com/user/

UWAGA: Upewnij się, że każdy wiersz kończy się znakiem [/], w przeciwnym razie poczta nie zostanie dostarczona.
Wirtualny użytkownik [adam@zicher.lab] (pamiętaj, że ten użytkownik nie ma loginu FreeBSD, to wszyscy są użytkownicy wirtualni) otrzyma swoją wiadomość e-mail w katalogu /var/mail/vhosts/zicher.lab/adam. Nie musisz tworzyć tych podkatalogów. Gdy wszystko będzie działać, Postfix zajmie się utworzeniem struktury Maildir (cur, new, tmp).
Jeśli chcesz, możesz utworzyć adres typu catch-all, patrz przykład powyżej (catch-all). Ta linia mówi Postfixowi, aby pobierał wszystkie e-maile dla nieistniejących użytkowników w tej domenie [zicher-dwa.test], co oznacza w praktyce bardzo dużo spamu.
Ale co, jeśli masz ważnego użytkownika FreeBSD o nazwie [artur]? Gdzie trafia ten e-mail? W tym przypadku nigdzie. Jeśli chcemy, aby ten użytkownik systemu operacyjnego otrzymał wiadomość e-mail, będziemy musieli traktować go jako użytkownika wirtualnego i dodać go do domeny wirtualnej. O wiele łatwiej jest utrzymywać jedną listę wirtualnych użytkowników i hostów niż zajmować się oddzielnymi plikami konfiguracyjnymi.
Być może zauważyłeś, że plik z adresami e-mail (vmailbox) ma przedrostek hash: w pliku konfiguracyjnym. Ma to na celu przyspieszenie wyszukiwania. Postfix może używać hash: (Berkeley-DB), bazy danych mySQL lub PostgreSQL do przechowywania kont e-mail. Sprawdź w postfix howto, jeśli chcesz używać mySQL lub PostgreSQL. My w tym przykładzie będziemy mieli do czynienia z Berke-ley DB.
Utwórz teraz plik aliasów wirtualnych i utwórz plik aliasów lokalnych.

root@vfbsd01:~ # touch /usr/local/etc/postfix/virtual
root@vfbsd01:~ # cd /etc
root@vfbsd01:/etc # postalias aliases

Po zakończeniu edycji tych plików wykonaj następujące czynności, aby utworzyć pliki z haszem (rozszerzenie .db).
UWAGA: Powinieneś wykonać te linie za każdym razem, gdy wprowadzasz zmiany w tych plikach.

root@vfbsd01:/etc # postmap /usr/local/etc/postfix/virtual
root@vfbsd01:/etc # postmap /usr/local/etc/postfix/vmailbox

Uruchamiamy Postfix’a za pomocą komendy:

root@vfbsd01:/etc # service postfix start
postfix/postfix-script: starting the Postfix mail system

Sprawdźmy logi:

root@vfbsd01:/etc # tail /var/log/maillog
...
Nov 20 14:41:12 vfbsd01 postfix/postfix-script[3273]: starting the Postfix mail system
Nov 20 14:41:12 vfbsd01 postfix/master[3275]: daemon started -- version 3.7.2, confi-guration /usr/local/etc/postfix

Następnie sprawdź czy Postfix jest uruchomiony i czy nasłuchuje na porcie 25.

root@vfbsd01:/etc # ps -waux | grep postfix
root 3275 0.0 0.2 54700 8988 - Ss 14:41 0:00.00 /usr/local/libexec/postfix/master -w
postfix 3276 0.0 0.2 54732 8988 - S 14:41 0:00.00 pickup -l -t unix -u
postfix 3277 0.0 0.2 54784 9056 - I 14:41 0:00.00 qmgr -l -t unix -u
root 3291 0.0 0.0 12840 1952 0 S+ 14:44 0:00.00 grep postfix
root@vfbsd01:/etc # sockstat -4 | grep :25
root master 3275 13 tcp4 *:25 *:*

UWAGA: Postfix’a można zatrzymać i ponownie uruchomić za pomocą [service postfix stop] i [service postfix restart] lub przeładować pliki konfiguracyjne za pomocą [service postfix reload].