22 maj

Jak zainstalować i skonfigurować Postfix na Ubuntu 18.04?

Ubuntu 18 Postfix

Postfix jest popularnym serwerem poczty email (MTA – Mail Transfer Agent) o otwartym kodzie źródłowym, którego można używać do kierowania i dostarczania wiadomości e-mail w systemie Linux. Szacuje się, że około 25% publicznych serwerów poczty w Internecie obsługuje Postfix.

W tym artykule pokażemy, jak szybko rozpocząć pracę z Postfix na serwerze Ubuntu 18.04.

Aby poprawnie skonfigurować Postfix, potrzebujesz pełnej nazwy domeny (FQDN – Fully Qualified Domain Name) na serwerze Ubuntu 18.04. Jeśli planujesz akceptować pocztę, musisz upewnić się, że masz rekord MX wskazujący również na twój serwer pocztowy.

Założymy, że konfigurujesz host, którego FQDN to mail.example.com.

Instalacja Postfix

Postfix jest zawarty w domyślnych repozytoriach Ubuntu, więc instalacja jest prosta.

Aby rozpocząć, zaktualizuj swój lokalny cache pakietów apt, a następnie zainstaluj oprogramowanie. Przekażemy zmienną środowiskową DEBIAN_PRIORITY=low do naszego polecenia instalacyjnego, aby odpowiedzieć na dodatkowe pytania:

sudo apt update
sudo DEBIAN_PRIORITY=low apt install postfix

Use the following information to fill in your prompts correctly for your environment:

  • Ogólny rodzaj konfiguracji poczty?: W tym pytaniu wybieramy witrynę internetową (Internet Site), ponieważ odpowiada to naszym potrzebom w zakresie infrastruktury.
  • Systemowa nazwa poczty: jest to domena podstawowa używana do budowy prawidłowego adresu e-mail, gdy podana jest tylko część adresu dotycząca konta. Na przykład, nazwa hosta naszego serwera to mail.example.com, ale prawdopodobnie chcemy ustawić systemową nazwę poczty na example.com, aby przy nazwie użytkownika user1 Postfix używał adresu user1@example.com.
  • Adresat root i postmaster: jest to konto Linux, na które będzie przesyłana poczta adresowana do root@ i postmaster@. Użyj do tego swojego konta głównego. W naszym przypadku będzie to adam.
  • Inne miejsca docelowe, w których można akceptować pocztę: określa miejsca docelowe poczty, które będą akceptowane przez tę instancję Postfix. Jeśli musisz dodać inne domeny, za które ten serwer będzie odpowiedzialny, dodaj je tutaj (w przeciwnym razie powinno to i tak działać poprawnie).
  • Wymuś synchroniczne aktualizacje w kolejce poczty?: Ponieważ prawdopodobnie korzystasz z księgowanego systemu plików, zaakceptuj tutaj Nie.
  • Sieci lokalne: jest to lista sieci, dla których serwer poczty jest skonfigurowany do przekazywania wiadomości. Ustawienie domyślne powinno działać w przypadku większości scenariuszy. Jeśli zdecydujesz się go zmodyfikować, upewnij się, że uwzględniasz w pełni zasięg sieci.
  • Limit rozmiaru skrzynki pocztowej: można go użyć do ograniczenia rozmiaru wiadomości. Ustawienie na „0” wyłącza wszelkie ograniczenia rozmiaru.
  • Znak lokalnego adresu rozszerzenia: jest to znak, którego można użyć do oddzielenia zwykłej części adresu od rozszerzenia (używanego do tworzenia dynamicznych aliasów).
  • Stosowane protokoły internetowe: Zdecyduj, czy ograniczyć wersję IP obsługiwaną przez Postfix. Dla celów tego samouczka wybierzemy “wszystko”.

Mówiąc wprost, ustawienia, których użyjemy w tym przewodniku są następujące:

  • Ogólny rodzaj konfiguracji poczty?: Witryna internetowa
  • Systemowa nazwa poczty: example.com (nie mail.example.com)
  • Adresat root i postmaster: adam
  • Inne miejsca docelowe, w których można akceptować pocztę: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • Wymuś synchroniczne aktualizacje w kolejce poczty?: Nie
  • Sieci lokalne: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • Limit rozmiaru skrzynki pocztowej: 0
  • Znak lokalnego adresu rozszerzenia: +
  • Stosowane protokoły internetowe: wszystkie

Jeśli kiedykolwiek będziesz musiał powrócić do zmiany tych ustawień, możesz to zrobić, wykonując polecenie:

sudo dpkg-reconfigure postfix

Monity zostaną wstępnie wypełnione poprzednimi odpowiedziami.

Po ukończeniu powyższych czynności, możemy przeprowadzić nieco więcej działań konfiguracyjnych, aby skonfigurować nasz system tak, jak byśmy tego chcieli.

Dostosowanie konfiguracji Postfixa

Następnie możemy dostosować niektóre ustawienia, o które pakiet nie pytał przy instalacji.

Na początek możemy ustawić skrzynkę pocztową. Użyjemy formatu Maildir, który dzieli wiadomości na pojedyncze pliki, które są następnie przenoszone między katalogami na podstawie działań użytkownika. Inną opcją jest format mbox (którego tutaj nie omówimy), przechowujący wszystkie wiadomości w jednym pliku.

Ustawimy zmienną home_mailbox na Maildir/, która utworzy strukturę katalogów pod tą nazwą w katalogu osobistym użytkownika. Polecenia postconf można użyć do zapytania lub zdefiniowania ustawień konfiguracji. Skonfiguruj home_mailbox, wpisując:

sudo postconf -e 'home_mailbox= Maildir/'

Następnie możemy ustawić lokalizację tabeli virtual_alias_maps. Ta tabela mapuje dowolne konta e-mail na konta systemowe Linux. Stworzymy tę tabelę w /etc/postfix/virtual. Ponownie możemy użyć polecenia postconf:

sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

Mapowanie adresów e-mail na konta Linux

Następnie możemy skonfigurować plik map wirtualnych. Otwórz plik w edytorze tekstu:

sudo nano /etc/postfix/virtual

Tabela map wirtualnych aliasów ma bardzo prosty format. Po lewej stronie możesz wymienić wszystkie adresy, dla których chcesz zaakceptować e-mail. Następnie, oddzielając je spacjami, wpisz użytkownika Linuksa, do którego chcesz otrzymać tę pocztę.

Na przykład, jeśli chcesz zaakceptować wiadomość e-mail na contact@example.com i admin@example.com i chcesz, aby te e-maile były dostarczane do użytkownika adam, możesz skonfigurować swój plik w następujący sposób:

contact@example.com adam
admin@example.com adam

Po zmapowaniu wszystkich adresów na odpowiednie konta serwera, zapisz i zamknij plik.

Możemy zastosować mapowanie, wpisując:

sudo postmap /etc/postfix/virtual

Uruchom ponownie proces Postfix, aby mieć pewność, że wszystkie nasze zmiany zostały zastosowane:

sudo systemctl restart postfix

Konfiguracja zapory sieciowej (Firewall)

Jeśli korzystasz z zapory UFW, zgodnie z instrukcją konfiguracji serwera musimy zezwolić na wyjątek dla Postfix.

Możesz zezwolić na połączenia z usługą, wpisując:

sudo ufw allow Postfix

Komponent serwera Postfix jest zainstalowany i gotowy. Następnie skonfigurujemy klienta, który będzie mógł obsługiwać pocztę przetwarzaną przez Postfix.

Konfiguracja środowiska wraz z lokalizacją poczty

Przed zainstalowaniem klienta powinniśmy upewnić się, że nasza zmienna środowiskowa MAIL jest poprawnie ustawiona. Klient sprawdzi tę zmienną, aby dowiedzieć się, gdzie szukać poczty użytkownika.

Aby ustawić zmienną niezależnie od tego, w jaki sposób uzyskujesz dostęp do swojego konta (poprzez ssh, su, su –, sudo itp.), Musimy ustawić zmienną w kilku różnych lokalizacjach. Dodamy ją do /etc/bash.bashrc i pliku w /etc/profile.d, aby upewnić się, że każdy użytkownik to skonfigurował.

Aby dodać zmienną do tych plików, wpisz:

echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

Aby odczytać zmienną do bieżącej sesji, możesz pobrać plik /etc/profile.d/mail.sh:

source /etc/profile.d/mail.sh

Instalacja i konfiguracja klienta pocztowego

W celu interakcji z dostarczaną pocztą zainstalujemy pakiet s-nail. Jest to wariant klienta xmail BSD, który jest bogaty w funkcje, może poprawnie obsługiwać format Maildir i jest w większości kompatybilny wstecz. Wersja poczty GNU ma pewne ograniczenia, takie jak stałe zapisywanie przeczytanej poczty w formacie mbox, niezależnie od formatu źródłowego.

Aby zainstalować pakiet s-nail, wpisz:

sudo apt install s-nail

Powinniśmy dostosować kilka ustawień. Otwórz plik /etc/s-nail.rc w edytorze:

sudo nano /etc/s-nail.rc

W dolnej części pliku dodaj następujące opcje:

. . .
set emptystart
set folder=Maildir
set record=+sent

Umożliwi to otwarcie klienta nawet przy pustej skrzynce odbiorczej. Ustawi także katalog Maildir na zmienną folderu wewnętrznego, a następnie użyje go do utworzenia w nim wysłanego pliku mbox do przechowywania wysłanej poczty.

Zapisz i zamknij plik po zakończeniu.

Inicjalizacja Maildir i testowanie programu pocztowego

Teraz możemy przetestować klient pocztowy.

Inicjowanie struktury katalogów

Najłatwiejszym sposobem utworzenia struktury Maildir w naszym katalogu domowym jest wysłanie e-maila. Możemy to zrobić za pomocą polecenia s-nail. Ponieważ wysłany plik będzie dostępny dopiero po utworzeniu Maildir, powinniśmy wyłączyć zapisywanie go w naszym początkowym e-mailu. Możemy to zrobić, przekazując opcję -Snorecord.

Wyślij wiadomość e-mail, przekazując ciąg znaków do polecenia s-nail. Dostosuj polecenie, aby oznaczyć użytkownika Linux jako odbiorcę:

echo 'init' | s-nail -s 'init' -Snorecord adam

Możesz otrzymać następującą odpowiedź:

Can't canonicalize "/home/adam/Maildir"

Jest to normalne i może pojawić się tylko podczas wysyłania pierwszej wiadomości. Możemy sprawdzić, czy katalog został utworzony, szukając naszego katalogu ~/Maildir:

ls -R ~/Maildir

Powinieneś zobaczyć, że struktura katalogów została utworzona i że nowy plik wiadomości znajduje się w katalogu ~/Maildir/new:

/home/adam/Maildir/:
cur  new  tmp

/home/adam/Maildir/cur:

/home/adam/Maildir/new:
1463177269.Vfd01I40e4dM691221.mail.example.com

/home/adam/Maildir/tmp:

Wygląda na to, że nasza poczta została dostarczona.

Zarządzanie mailami poprzez klienta

Skorzystaj z klienta, aby sprawdzić swoją pocztę:

s-nail

Powinieneś zobaczyć nową oczekującą wiadomość:

s-nail version v14.8.6.  Type ? for help.
"/home/adam/Maildir": 1 message 1 new
>N  1 adam@example.com     Wed Dec 31 19:00   14/369   init

Wystarczy nacisnąć ENTER, aby ją wyświetlić:

[-- Message  1 -- 14 lines, 369 bytes --]:
From adam@example.com Wed Dec 31 19:00:00 1969
Date: Fri, 13 May 2016 18:07:49 -0400
To: adam@example.com
Subject: init
Message-Id: <20160513220749.A278F228D9@mail.example.com>
From: adam@example.com

init

Możesz wrócić do listy wiadomości, wpisując h, a następnie ENTER:

h
s-nail version v14.8.6.  Type ? for help.
"/home/adam/Maildir": 1 message 1 new
>R  1 adam@example.com     Wed Dec 31 19:00   14/369   init

Ponieważ ta wiadomość nie jest zbyt przydatna, możemy ją usunąć za pomocą d, a następnie ENTER:

d

Wyjdź, aby wrócić do terminala, wpisując q, a następnie ENTER:

q

Wysyłanie maili poprzez klienta

Możesz przetestować wysyłanie poczty, wpisując wiadomość w edytorze tekstu:

nano ~/test_message

Wewnątrz wpisz tekst, który chcesz wysłać e-mailem:

Hello,

This is a test.  Please confirm receipt!

Za pomocą polecenia cat możemy przesłać wiadomość do procesu s-nail. Spowoduje to domyślnie wysłanie wiadomości jako użytkownik systemu Linux. Możesz dostosować pole „From” za pomocą flagi -r, jeśli chcesz zmodyfikować tę wartość na coś innego:

cat ~/test_message | s-nail -s 'Naglowek testowego email' -r from_field_account user@email.com

Powyższe opcje to:

  • -s: temat wiadomości e-mail.
  • -r: opcjonalna zmiana w polu „Od:” wiadomości e-mail. Domyślnie zalogowany użytkownik systemu Linux będzie użyty do wypełnienia tego pola. Opcja -r pozwala ci to nadpisać.
  • user@email.com: konto, na które należy wysłać wiadomość e-mail. Zmień to na prawidłowe konto, do którego masz dostęp.

Możesz przeglądać wysłane wiadomości w swoim kliencie s-nail. Uruchom ponownie interaktywnego klienta, wpisując:

s-nail

Następnie wyświetl wysłane wiadomości, wpisując:

file +sent

Możesz zarządzać wysyłaną pocztą za pomocą tych samych poleceń, których używasz do poczty przychodzącej.

Podsumowanie

Powinieneś posiadać teraz na swoim serwerze Ubuntu 18.04 skonfigurowanego Postfixa. Zarządzanie serwerami e-mail może być trudnym zadaniem dla początkujących administratorów, ale przy takiej konfiguracji – na początek – powinieneś mieć dostępne podstawowe funkcje poczty e-mail MTA.