Nasz serwer ma stały dostęp do sieci i będzie wykorzystywał zewnętrzny serwer pocztowy i konto na nim do wysyłania wiadomości na wskazany adres e-mail. Wszystkie wiadomości systemowe których adresatem jest root trafią do zwykłego użytkownika a następnie zostaną przekazane na zewnętrzny adres e-mail. Aby to osiągnąć trzeba będzie:
apt-get install exim4
dpkg-reconfigure exim4-config
W uruchomionym kreatorze ustawiamy kolejno:
Poczta wysyłana przez pośrednika - otrzymywana przez SMTP lub fetchamil
Nazwa pocztowa: NAZWA_HOSTA
Adresy IP: 127.0.0.1 ; ::1
Inne systemy docelowe dla których poczta jest przyjmowana: PUSTE
Komputery dla których przekazywać pocztę: PUSTE
Adres IP lub nazwa pośrednika przyjmującego wychodzącą pocztę / IP address or host name of the outgoing smarthost: SMTP.ZWENETRZNYSERWERPOCZTY.COM::587
Ukrywać lokalną nazwę w wychodzącej poczcie? TAK
Widoczna nazwa domeny dla lokalnych użytkowników: NAZWA_LOKALNEJ_MASZYNY
Utrzymywać ilość zapytań DNS na minimalnym poziomie (dzwonienie na żądanie) / Keep number of DNS-queries minimal (Dial-on-Demand): NIE
Format dostarczania poczty lokalnie: WEDLE GUSTU
Podzielić konfigurację na małe pliki / Split configuration into small files: NIE
W pliku /etc/exim4/passwd.client wprowadzamy w nowej linii:
smtp.zewnetrznyserwerpoczty.com:user@domena.com:4laMa#PsaWiadomości systemowe które trafiają do użytkownika root przekierowujemy na konto zwykłego użytkownika modyfikując plik /etc/alises:
root: USER
Robimy to ponieważ na koncie użytkownika root mimo ustawienia pełnej nazwy często nie jest ona przekazywana w nagłówku wiadomości e-mail co utrudnia późnejsze sortowanie poczty.
Modyfikujemy plik /etc/email-addresses wskazujący jakimi adresami powinien się legitymować dany użytkownik by serwer zewnętrzny przyjął korespondencje, którą ma wysłać dalej
root: user@serwer.com
USER: user@serwer.com
Bez tego zabiegu zewnętrzny serwer otrzyma informację, że nadawcą jest root@NASZA_MASZYNA a nie użytkownik serwera zdalnego za pomoca którego chcemy nadać wiadomość. Takie e-maile są odrzucane a w niektórych przypadkach operatorzy blokują na jakiś czas przyjmowanie wiadomości z adresu IP, który próbuje w taki sposób zmieniać tożsamość nadawców.
Sprawdzamy czy wysyłanie poczty działa wysyłając testową wiadomość na adres DOCELOWY_ADRES_EMAIL:
echo 'Sprawdzamy czy działa wysyłanie poczty z '$HOSTNAME | mail -s 'Test poczty' DOCELOWY_ADRES_EMAIL
Jeżeli wiadomość nie doszła to sprawdzamy w /var/log/exim4/mainlog co poszło nie tak.
Otrzymana wiadomość w polu od ma jedynie adres e-mail. W przypadku jeśli chcemy by więcej użytkowników / maszyn używało tego samego e-maila możemy w polu Od: dodać identyfikator. Aby to zrobić należy dla danego użytkownika na maszynie wysyłającej pocztę wywołać komendę chfn.
Wiadomości systemowe mogą zawierać wrażliwe dane dlatego przed przesłaniem ich na zewnątrz warto je zaszyfrować. Do tego celu użyty zostanie procmail wraz gnupg
apt install procmail gnupg
Na koncie użytkownika który będzie odbiorcą wiadomości systemowych na danym komputerze (zdefiniowany w /etc/aliases jako odbiorca wiadomości od root) dodajemy klucz publiczny którym wiadomości mają być szyfrowane:
gpg --import /tmp/klucz.pub
Dodajemy odpowiedni skrypt do ~/.procmailrc:
SUBJECT=`formail -xSubject:`
FROM=`formail -xFrom:`
:0c
* ^To:.*
|formail -I "" | gpg --trust-model always -ear "ADRES_EMAIL_WYSTAWCY_KLUCZA" | mail -s "$SUBJECT" DOCELOWY_ADRES_EMAIL
Możemy sprawdzić działanie wysyłając wiadomość:
echo 'Sprawdzamy czy wiadomość jest zaszyfrowana '$HOSTNAME | mail -s 'Test poczty' root
Zaszyfrowany e-mail powinien trafić na naszą zewnętrzną skrzynkę.
Dodatkowo możemy ustawić powiadomienie o logowaniu na dane konto shell dodając w pliku ~/.bash_profile następującą treść:
echo -e 'Dostep do shella (user@server):\n' `date` '\n' `who` '\n' | mail -s "Logowanie na user@server" NASZ_USER_PRZEJMUJĄCY_KOREPONDENCJĘ