08 lis

Jak zainstalować i skonfigurować Postfix na Ubuntu 16.04

blog-postfix-ubuntu16-04Postfix jest popularnym open source Mail Transfer Agent (MTA), który można używać do kierowania i dostarczania wiadomości email w systemie Linux. Około 25% z publicznych serwerów pocztowych w Internecie uruchamiają Postfix.

W tym tutorialu będziemy uczyć jak zainstalować i pracować z Postfix na serwerze Ubuntu 16.04.

Wymagania

Aby pracować z tym tutorialem trzeba mieć dostęp do użytkownika innego niż root z sudo przywilejami. Możesz przejść na stronę Wstępna konfiguracja serwera z Ubuntu 16.04 do tworzenia niezbędnych użytkowników.

W celu prawidłowego skonfigurowania Postfix, będziesz potrzebował Fully Qualified Domain Name wskazane na Twój serwer Ubuntu 16.04.

Dla celów tego tutorialu, zakładamy że konfigurujesz węzeł, który ma nazwę domeny mail.example.com.

Krok #1: Instalacja Postfix

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

Aby rozpocząć, należy zaktualizować lokalną apt pamięć podręczną pakietów, a następnie zainstalować oprogramowanie. Przejdziemy w DEBIAN_PRIORITY=low zmiennej środowiskowej do naszego polecenia instalacji w celu odpowiedzi na pewne dodatkowe komunikaty:

sudo apt-get update
sudo DEBIAN_PRIORITY=low apt-get install postfix

Użyj poniższe informacje, aby poprawnie wypełnić wskazówki dla danego środowiska:

  • General type of mail configuration?: Będziemy wybierać stronę internetową ponieważ pasuje do naszych potrzeb infrastrukturalnych.
  • System mail name: To jest podstawowa domena, stosowana do tworzenia prawidłowego adresu email, gdy podana tylko część adresu. Na przykład, nazwa hosta naszego serwera jest example.com, ale prawdopodobnie chcesz ustawić nazwę poczty systemowej example.com tak, że ze względu na nazwę użytkownika user1, Postfix użyje adresu user1@example.com.
  • Root and postmaster mail recipient: Jest to konto Linux, które zostanie wysłane pocztą adresowaną do root@ i postmaster@. Użyj swojego podstawowego konta do tego. W naszym przypadku to sammy.
  • Other destinations to accept mail for: To określa adres docelowy, który Postfix będzie akceptować. Jeśli chcesz dodać inne domeny – dodaj je tutaj, w przeciwnym razie, domyślnie powinien działać dobrze.
  • Force synchronous updates on mail queue?: Ponieważ, prawdopodobnie używasz system plików z księgowaniem, wybierz tutaj No.
  • Local networks: To jest lista sieci gdzie serwer jest skonfigurowany do przekazywania wiadomości. Domyślnie powinien pracować dla większości scenariuszy. Jeśli zdecydujesz się go zmodyfikować, upewnij się że jest bardzo restrykcyjny w stosunku do zasięgu sieci.
  • Mailbox size limit: To może być używane do ograniczenia rozmiaru wiadomości. Ustawienie na „0” wyłącza wszelkie ograniczenia rozmiaru.
  • Local address extension character: To jest znak, który może być używany do oddzielania części regularnych adresów z rozszerzeniem (używany do tworzenia dynamicznych aliasów).
  • Internet protocols to use: Wybierz, czy ograniczyć wersję IP, którą Postfix obsługuje. Wybieramy dla naszych celów „all„.

Następujace ustawienia będziemy używać do tego tutorialu:

  • General type of mail configuration?: Internet Site
  • System mail name: com (not mail.example.com)
  • Root and postmaster mail recipient: sammy
  • Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • Force synchronous updates on mail queue?: No
  • Local networks: 0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • Mailbox size limit: 0
  • Local address extension character: +
  • Internet protocols to use: all

 

Jeśli chcesz kiedykolwiek wrócić do ponownego dostosowania tych ustawień, można to zrobić wpisując:

sudo dpkg-reconfigure postfix

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

Po zakończeniu, możemy zrobić więcej konfiguracji, aby dostosować nasz system jak chcemy.

Krok #2: Konfiguracja Postfix

Dalej możemy dostosować niektóre parametry.

Na początek możemy ustawić skrzynkę pocztową. Użyjemy formatu Maildir, który oddziela wiadomości w osobnych plikach, które następnie są przenoszone między katalogami na podstawie działań użytkownika. Inną opcją jest format  mbox (który nie będziemy tu omawiać), który przechowuje wszystkie wiadomości w jednym pliku.

Będziemy instalować zmienną home_mailbox w maildir/, która będzie tworzyć strukturę katalogów pod tą nazwą w katalogu domowym użytkownika. Polecenie postconf może służyć do uzyskania lub zmiany ustawień konfiguracyjnych. Skonfigurujemy home_mailbox poprzez wpisywanie:

sudo postconf -e 'home_mailbox= Maildir/'

Następnie możemy ustawić lokalizację tabeli virtual_alias_maps. Ta tabela wyświetla dowolne konta email dla systemu kont w systemie Linux. Będziemy tworzyć tę tabelę w pliku /etc/postfix/virtual. Ponownie, możemy użyć polecenia postconf:

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

Krok #3: Mapa adresów email do kont Linux

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

sudo nano /etc/postfix/virtual

Wirtualna mapa alias tabeli używa bardzo prostego formatu. Po lewej stronie, można wymienić wszystkie adresy, od których chcesz odbierać wiadomości email. Następnie  oddzielone spacjami, wprowadź nazwę użytkownika Linux, do którego poczta musi być dostarczona.

Na przykład, jeśli chcesz odbierać wiadomości email na contact@example.com i admin@example.com, i chciałbyś aby te wiadomości email byli dostarczane do użytkownika systemu Linux sammy, można skonfigurować plik tak:

/etc/postfix/virtual
contact@example.com sammy
admin@example.com sammy

Po tym, jak dopasujesz wszystkie adresy do odpowiednich kont serwera, zapisz i zamknij plik.

Możemy zastosować mapowanie poprzez wpisywanie:

sudo postmap /etc/postfix/virtual

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

sudo systemctl restart postfix

Krok #4: Ustawienie zapory

Jeśli używasz zapory UFW, zgodnie z ustawieniami w początkowej instrukcji konfiguracji serwera, musimy zrobić wyjątek dla Postfix.

Można zezwolić na połączenie z usługą wpisując:

sudo ufw allow Postfix

Komponent serwera Postfix jest zainstalowany i gotowy. Następnie będziemy konfigurować klienta, który może obsługiwać pocztę, która będzie przetwarzać Postfix.

Krok #5: Konfigurowanie środowiska zgodnie z lokalizacją mailową

Zanim zainstalujemy klienta, należy upewnić się że nasza zmienna środowiskowa MAIL została poprawnie zainstalowana. Klient będzie sprawdzać tą zmienną, aby dowiedzieć się gdzie szukać użytkowników poczty.

Aby zmienna została zainstalowana niezależnie od tego w jaki sposób uzyskasz dostęp do konta (poprzez ssh, su, su –, sudo, itd.), musimy ustawić zmienną w kilku różnych miejscach. Dodamy je do pliku /etc/bash.bashrc i do pliku /etc/profile.d, aby upewnić się, że każdy użytkownik będzie miał to skonfigurowane.

Aby dodać zmienną do tych plików, należy wpisać:

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żna pozyskać plik /etc/profile.d/mail.sh :
source /etc/profile.d/mail.sh

Krok #6: Instalacja i konfiguracja klienta poczty

W celu interakcji z pocztą dostarczaną będziemy instalować pakiet s-nail . Jest to wariant BSD xmail klienta, który jest wielofunkcyjny, może obsługiwać poprawnie format Maildir i w większości jest wstecznie kompatybilny. Wersja GNU mail ma pewne ograniczenia, takich jak  odczytanie poczty w formacie mbox, niezależnie od formatu źródłowego.

Aby zainstalować pakiet s-nail, należy wpisać:

sudo apt-get install s-nail

Musimy ustawić kilka parametrów. Otwórz plik /etc/s-nail.rc w edytorze:

sudo nano /etc/s-nail.rc

W dolnej części pliku należy dodać następujące parametry:

/etc/s-nail.rc
. . .
set emptystart
set folder=Maildir
set record=+sent

To pozwoli klientom otwierać nawet pustą skrzynkę pocztową. Również zostanie zainstalowany katalog Maildir wewnętrz zmiennej folder , a następnie wykorzystamy to, aby stworzyć plik sent mbox, do przechowywania wysłanych wiadomości.

Zapisz i zamknij plik po zakończeniu.

Krok #7: Inicjalizacja Maildir i testowanie klienta

Teraz możemy przetestować klienta.

Inicjalizacja struktury katalogów

Najprostszym sposobem, aby utworzyć strukturę Maildir w zasięgu naszego katalogu domowego – wysłać do siebie wiadomość email. Możemy to zrobić za pomocą polecenia mail. Ponieważ plik sent będzie dostępny tylko po utworzeniu Maildir, powinniśmy wyłączyć zapisywanie do naszej pierwotnej poczty elektronicznej. Możemy to zrobić poprzez przekazywanie opcji -Snorecord.

Wyślij wiadomość email poprzez przeniesienie wiersza do polecenia mail. Skonfiguruj polecenie, aby oznaczyć użytkownika Linux jako odbiorcę:

echo 'init' | mail -s 'init' -Snorecord Sammy

Powinieneś otrzymać następującą odpowiedź:

Output
Can't canonicalize "/home/sammy/Maildir"

Jest to normalne i będzie wyświetlane tylko w tej pierwszej wiadomości. Możemy sprawdzić, aby upewnić się, że katalog został stworzony, wyszukując ~/Maildir:

ls -R ~/Maildir

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

Output
/home/sammy/Maildir/:
cur  new  tmp

/home/sammy/Maildir/cur:

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

/home/sammy/Maildir/tmp:

Wygląda na to, że nasza wiadomość została dostarczona.

Zarządzanie pocztą z klientem

Użyj klienta, aby sprawdzić pocztę:

mail

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

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

Po nacisku klawiszy ENTER powinna być wyświetlana wiadomość:

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

init

Można wrócić do listy wiadomości wpisując h:

h

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

Ponieważ ta wiadomość nie jest przydatna, możemy ją usunąć za pomocą d :

d

Zakończ, aby wrócić do terminalu wpisując q :

q

Wysyłanie wiadomości z klientem

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

nano ~/test_message

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

~ / Test_message
Hello,

This is a test.  Please confirm receipt!

Za pomocą polecenia cat, możemy wysłać wiadomość na proces mail. To wyśle wiadomość domyślnie jako użytkownik Linux . Można dostosować pole „From” z flagą  -r, jeśli chcesz zmienić tą wartość na inną:

cat ~/test_message | mail -s 'Test email subject line' -r from_field_account user@email.com

Powyższe parametry są następujące:

  • -s: Wiersz tematu wiadomości email.
  • -r: Opcjonalna zmiana w wierszu „From:”. Nazwa użytkownika Linux który jest zalogowany, zostanie domyślnie wykorzystana do wypełnienia tego pola. Opcja -r pozwala to zmienić.
  • user@email.com: Konto na które wysyłamy wiadomość. Zmień to na ważne konto do którego masz dostęp.

Sprawdź listę wysłanych wiadomości w swoim mail kliencie. Uruchom interaktywny klient ponownie wpisując:

mail

Aby wyświetlić listę wysłanych wiadomości wpisz:

file +sent

Możesz zarządzać wysłanymi wiadomościami, korzystając z tych samych poleceń, które używasz dla poczty przychodzącej.

Wniosek

Powinieneś mieć teraz Postfix skonfigurowany na serwerze Ubuntu 16.04. Zarządzanie serwerami pocztowymi może być trudnym zadaniem dla początkujących administratorów, ale z taką konfiguracją, należy mieć podstawową funkcjonalność poczty MTA.

Udostępnij