[2] Postfix – Instalacja
4 lutego 2023Instalacja
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].