Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Zmiana serwera mail w OpenBSD 5.3

Osoby, które czytały moje wpisy, z pewnością zauważyły, że lubię system OpenBSD. Używam go w pracy jako firewall. Ci co znają choć trochę OpenBSD, wiedzą, że domyślnym serwerem poczty jest Sendmail. A ci co znają Sendmail'a wiedzą, że jego konfiguracja jest co najmniej niebanalna ;-)
Uważny czytelnik z pewnością zapyta: serwer poczty na firewall'u? A no tak, na firewall'u. Tyle, że nasłuchujący wyłącznie na interfejsie loopback, czyli obsługujący pocztę wewnętrzną (np. wiadomości od działających programów do administratora) i wychodzącą, bez możliwości przyjmowania maili z zewnątrz.
W OpenBSD istnieje usługa sprawdzająca raz w ciągu doby stan systemu. Wygenerowany przez tą usługę (czy może raczej skrypt) raport zawiera min: ilość przesłanych danych, kolejkę niedostarczonych maili, ilość błędów w przesłanych pakietach itp. Jednak najważniejszą informacją jest rodzaj wprowadzonych modyfikacji w plikach systemowych bo w razie czego zauważymy, że ktoś majstruje w naszym systemie. Przykładowy raport wygląda tak:

OpenBSD 5.2 (GENERIC) #278: Wed Aug  1 10:04:16 MDT 2012
    deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC

 1:30AM  up  6:50, 0 users, load averages: 0.08, 0.08, 0.08

Checking subsystem status:

disks:
Filesystem  1K-blocks      Used     Avail Capacity  Mounted on
/dev/wd0a     1028878     42736    934700     4%    /
/dev/wd0k    17898974       114  17003912     0%    /home
/dev/wd0d     2618606        10   2487666     0%    /tmp
/dev/wd0f     2061054    381456   1576546    19%    /usr
/dev/wd0g     1028878    183440    793996    19%    /usr/X11R6
/dev/wd0h     5184846    100926   4824678     2%    /usr/local
/dev/wd0j     2061054       822   1957180     0%    /usr/obj
/dev/wd0i     1653630    738660    832290    47%    /usr/src
/dev/wd0e     4137918      9362   3921662     0%    /var

Last dump(s) done (Dump '>' file systems):

mail:
MTA|a48144e392a64770|ENQUEUED|root@jakas-subdomena.no-ip.org|nazwa_uzytkownika@tlen.pl|1362347629|345600|3|150
Can not connect to MX
MTA|688243a51738037e|ENQUEUED|mic@jakas-subdomena.no-ip.org|nazwa_uzytkownika@tlen.pl|1362347629|345600|3|150
Can not connect to MX
MTA|a3f90421115ed63b|ENQUEUED|root@jakas-subdomena.no-ip.org|nazwa_uzytkownika@tlen.pl|1362347629|14400|2|150
Can not connect to MX
MTA|0cbb35649a6ea320|ENQUEUED|root@jakas-subdomena.no-ip.org|nazwa_uzytkownika@tlen.pl|1362347629|14400|2|150
Can not connect to MX

network:
Name    Mtu   Network     Address              Ipkts Ierrs    Opkts Oerrs
Colls
lo0     33196 <Link>                              18     0       18     0  
lo0     33196 ::1/128     ::1                     18     0       18     0  
lo0     33196 fe80::%lo0/64 fe80::1%lo0           18     0       18     0
lo0     33196 127/8       127.0.0.1               18     0       18     0  
vr0*    1500  <Link>      00:40:63:ef:9a:cd        0     0        0     0  
vr1     1500  <Link>      00:40:63:ef:9a:cc     2254     0     2132     0  
vr1     1500  10.0.0/24   10.0.0.2              2254     0     2132     0  
vr1     1500  fe80::%vr1/64 fe80::240:63ff:feef:9acc%vr1     2254     0    2132     0
rl0     1500  <Link>      00:a1:b0:a0:a4:31        0     0        2     0
rl0     1500  192.168.1/24 192.168.1.1             0     0        2     0 
rl0     1500  fe80::%rl0/64 fe80::2a1:b0ff:fea0:a431%rl0        0     0    2     0
enc0*   0     <Link>                               0     0        0     0  
pflog0  33196 <Link>                               0     0      341     0

Domyślnie Sendmail wysyła maila na konto użytkownika systemu, więc żeby go odczytać trzeba się zalogować do systemu. Nie jest to zbyt wygodne rozwiązanie, więc warto zmienić to tak aby Sendmail wysyłał maila na zewnętrzną skrzynkę. I tu zaczynają się schody jeśli Twój ISP blokuje port 25, który jest standardowym portem serwera SMTP.
Przyznać się muszę, że nigdy nie interesowałem się serwerami email, Sendmailem zwłaszcza. Pomimo kilkudniowych prób zmiany portu z 25 na 587 dla połączeń wychodzących nie udało mi się zmusić go do korzystania z portu 587 przy wysyłaniu maili.
Wobec tego zapadała tytułowa decyzja: dziękujemy Sendmailowi i używamy czegoś współczesnego. Zespół OpenBSD od jakiegoś czasu pracuje na własnym serwerem poczty, który nazywa się OpenSMTPD.
Jako że, OpenSMTD jest integralną częścią systemu OpenBSD, nie trzeba nic instalować aby go uruchomić.
No to zaczynamy. Na początek zatrzymujemy Sendmaila:

# /etc/rc.d/sendmail stop

Następnie informujemy system żeby korzystał z OpenSMTPD. Zawartość pliku /etc/mailer.conf zamieniamy na:

r   e   k   l   a   m   a


sendmail        /usr/sbin/smtpctl
send-mail       /usr/sbin/smtpctl
mailq           /usr/sbin/smtpctl
makemap         /usr/libexec/smtpd/makemap
newaliases      /usr/libexec/smtpd/makemap

Następnie krótka seria poleceń:


# newaliases
# echo "sendmail_flags=NO" >> /etc/rc.conf.local
# echo "smtpd_flags=" >> /etc/rc.conf.local
# /etc/rc.d/smtpd start

i system już wie, że ma używać OpenSMTPD zamiast Sendmaila.
Teraz przystępujemy do konfiguracji OpenSMTPD.
Tworzymy plik haseł:

# touch /etc/mail/secrets

Zmieniamy uprawnienia dostępu:


# chmod 640 /etc/mail/secrets
# chown root:_smtpd /etc/mail/secrets

Uzupełniamy plik: etykietą, nazwą użytkownika i hasłem:


# echo "gmail  username:password" > /etc/mail/secrets
# makemap /etc/mail/secrets

Do pliku /etc/mail/smtpd.conf wprowadzamy następujące dane:


listen on lo0
expire 4h
table aliases db:/etc/mail/aliases.db 
table secrets db:/etc/mail/secrets.db 
accept for local alias <aliases> deliver to mbox 
accept for any relay via tls+auth://gmail@smtp.gmail.com:587 auth <secrets>

Na koniec uruchamiamy OpenSMTPD:

# /etc/rc.d/smtpd start

Od tego momentu OpenBSD będzie wysyłał nam raporty na adres podany w pliku /etc/mail/aliases za pośrednictwem Google Gmail. 

serwery

Komentarze