Exim i teapop

Poczta elektroniczna, tzw. e-mail, jest realizowana przez programy nazywane MTA (Mail Transport Agent). To te programy utrzymują skrzynki pocztowe użytkowników oraz zajmują się skutecznym dostarczaniem listów do odbiorców. Programy wykorzystują standardowo port 25 komunikując się protokołem nazwanym SMTP (Simple Mail Transport Protocol). Niektóre z tych programów potrafią także obsługiwać przekazywanie odebranych listów ze skrzynek do programów obsługi poczty takich jak Outlook, The Bat itp. Tak jest w przypadku eXtremaila ale np. Exim wymaga dodatkowego programu obsługującego protokół odbioru poczty nazywany POP3. Odbiór poczty poprzez protokół POP3 odbywa się na porcie 110. Nowszy protokół IMAP4 posługuje się portem 143.

Do dyspozycji we Freesco mamy kilka programów: eXtremail (SMTP + POP3) albo exim (SMTP) we współpracy z teapopem (POP3) lub pakietem courier. Ponieważ eXtremail ma świetny opis (manual) na swojej stronie domowej, a ponadto działanie tego programu było powodem wielu problemów użytkowników Freesco, dlatego skupimy się na tandemie exim+teapop.
Warto polecić ostatnią wersję tych programów (exim 3.36, teapop 0.3.5) – o przyczynach takiego wyboru później. Ci którzy lubią tzw. kombajny mogą zainteresować się Communigate Pro. Na www.freescosoft można znaleźć też aplikację Delegated, która spełnia podobne zadania. Można też wspomnieć, że właśnie w fazie testów znajduje się postfix.
INSTALACJA
Poleceniem installpkg http://adres.serwera.z.paczkami/exim rozpoczynamy instalację exima a później teapopa (zamiast teapopa można wybrać courier, który ma możliwość posługiwania się protokołem IMAP4) Przykład:
installpkg http://www.freesco.arx.pl/0.2.7/exim
Instalacja jest standardowa i nie powinna sprawić większych kłopotów. Exim jest programem MTA, czyli jedynie przekazuje pocztę pomiędzy komputerami w Internecie. Zatem nie sprawdzimy jego działania przed instalacją programu do odbioru poczty.
KONFIGURACJA
Po instalacji musimy wyedytować plik „configure” w katalogu /mnt/router/packages/exim. Nie ma sensu podawać tu pliku w całości ponieważ większość domyslnych ustawień zachowamy. Natomiast te które są poniżej, musimy koniecznie zmienić. Niektórym zmiennym pliku configure można przypisać kilka wartości – w tym przypadku oddzielamy je dwukropkiem. Spacje można wstawiać ale nie ma obowiązku, są ignorowane. primary_hostname = wpisz.adres.swojego.serwera.pl
# Przykład:
primary_hostname = pp22.miastko.sdi.tpnet.pl
# qualify_domain =
# Zostawiamy zahaszowane, będzie wykorzystana wartość z primary_hostname
local_domains = localhost : wpisz.adres.swojego.serwera.pl
# Przykład:
local_domains=localhost:pp22.miastko.sdi.tpnet.pl:domenakumpla.pl
Te linie wskazują Eximowi, po nawiązaniu połączenia przychodzącego w celu przesłania maila, jakie przesyłki ma dostarczyć do lokalnych skrzynek a jakie należy przesłać dalej (tzw. relaying). Jeśli adres docelowy e-maila nie zgadza się z którąś z wartości local_domains nie powinniśmy domyślnie pozwalać na przesyłkę dalej bez autentykacji, o czym później, ponieważ stworzymy tzw. open relay chętnie wykorzystywany przez spamerów do nadużyć.
# local_domains_include_host_literals
forbid_domain_literals
Pierwszą domyślnie haszujemy znakiem „#”, drugą należy odhaszować, jeśli nie chcemy dostawać maili zaadresowanych do nas za pomocą naszego adresu IP zamiast nazwy domeny. Przykładowo user@[212.100.111.111] – jest to zaszłość używana dawniej choć nadal będąca częścią standardu, jednak obniża odporność na otrzymywanie niepożądanej poczty.
never_users = root
Definiujemy użytkowników dla których lokalne dostarczanie listów nie będzie wykonywane pod ich numerem uid, w zamian będzie użyte konto nobody. Jest to następna opcja bezpieczeństwa tzw. paranoid. Oczywiscie należałoby jeszcze zmienić wpisy w pliku „aliases” (katalog /mnt/router/packages/mail) – tak żeby listy adresowane do roota trafiały do innej skrzynki, posługiwanie się kontem roota do odbioru poczty nie jest bezpieczne.
Teraz pora na ustawienia dotyczące komputerów, które będą mogły korzystać z serwera smtp (wysyłać listy w świat), domyślnie są to komputery w sieci wewnętrznej i ewentualnie zaufane hosty naszych znajomych, czy nasz własny w pracy (lub odwrotnie) Ważne jest, żeby adresy tych komputerów były stałe – nie będzie to działać ze zmiennymi IP przydzielanymi komputerom łączącym się z internetem za pomocą modemów analogowych np. 0202122 w TPSA, usługa Dialnet co dzień itp.
host_accept_relay = localhost : my.friends.host : 192.168.0.0/16
Oczywiście nie wszystkie wpisy muszą być, jeśli jednak chcemy korzystać z logchecka, powiadamiania sms na telefon komórkowy, czy polecenia „mail” w skryptach php czy cgi, musimy tu również umieścić wpis localhost i wewnętrzną nazwę naszego serwera (jeśli jest inna niż nazwa zewnętrzna).
# relay_domains =
# To zostawiamy zahaszowane bo dotyczny tylko sytuacji, gdy jesteśmy wpisani w DNS dla jakiejś domeny zapasowym serwerem MX czyli poczty. Jeśli jednak jesteśmy to wpisujemy tu te domeny dla których prowadzimy taką usługę.
CZYNNOŚCI KOŃCOWE
Odblokujmy jeszcze komunikację programu ze światem. W tym celu wyedytujmy plik /mnt/router/rc/rcuser/rc_exim i wyszukajmy linijek:
# Comment out the next line to make exim accessable from the internet
# [ „$ENAMSQ” = y ] && ipfwadm -I -a reject -P tcp -W $INET -D 0.0.0.0/0 25
ta druga musi zaczynać się znakiem „#”, jeśli go brak wstawmy go tam i zapiszmy zmiany w pliku.
Na tym można zakończyć konfigurację exima dla najprostszej sytuacji, gdy listy wysyłane w świat będą pochodzić tylko z komputerów w naszej sieci lokalnej. Jednak mogą zaistnieć sytuacje, że sami znajdziemy się na zewnątrz sieci, albo udostępniamy komuś konto e-mail. Temu służy tzw. autentykacja albo inaczej uwierzytelnianie.
host_auth_accept_relay = *
Gwiazdka wpisana w tej linii spowoduje, że ze wszystkich hostów zewnętrznych trzeba będzie stosować uwierzytelnianie.
Ostatnia sekcja pliku „configure” zawiera wpisy pozwalające korzystać z haseł systemowych w celu przeprowadzenia uwierzytelniania, w tym zakresie niczego nie zmieniamy.
Pozostałe elementy konfiguracji można pozostwić bez zmian.
EXIM Z TEAPOPEM
Konfiguracja exima daje wiele różnych możliwości we współpracy z teapopem, fetchmailem i procmailem.
Można np. zmusic tandem teapop i exim do przechowywania listów w formacie „mbox”.
Możemy dodać wpis w sekcji DIRECTORS CONFIGURATION pliku configure exima:
users_aliases:
driver = aliasfile
file = /etc/users_aliases
search_type = lsearch
errors_to = root
i dodać plik users_aliases w katalogu /etc, co spowoduje, że można wstawiać dowolne aliasy np.:
webmaster: maciek@helios.workgroup
postmaster: maciek@helios.workgroup
admin: maciek@helios.workgroup
zdefiniowane aliasy nie muszą mieć w systemie użytkowników… Trzeba pamiętać, że plik ten dodajemy do katalogu /mnt/etc i kopiujemy ręcznie do /etc lub robimy restart.
Można również zmienić domyślny format przechowywania poczty. Obecnie jest to najczęściej tzw. maildir. Exim korzysta z tego domyślnie.
W sekcji „Transport Configuration” są następujące ustawienia:
local_delivery:
driver = appendfile
maildir_format = true
directory = /var/mail/$local_part
require_lockfile = true
use_fcntl_lock = true
use_lockfile = true
delivery_date_add
envelope_to_add
return_path_add
headers_add = „Lines: $body_linecount”
group = mail
# mode = 0660
Jeśli zmienimy „directory” na „file” ( i zahaszujemy linię maildir_format = true) exim będzie składował pocztę w tradycyjnym formacie „mbox” czyli w pliku.
Wielu administratorów Freesco pyta o możliwość założenia skrzynek pocztowych w katalogach domowych, które zwykle są na osobnej partycji, zapobiega to zapchaniu partycji systemowej przez użytkowników lubiących przesyłać i przechowywać wiele dużych plików. Musimy dokonać kilku zmian w konfiguracji exima i teapopa. Przedstawiony schemat zakłada, że katalogi użytkowników znajdują się w /mnt/home.
Zmiany w pliku konfiguracyjnym exima:
local_delivery:
driver = appendfile
# maildir_format = true
file = /mnt/home/$local_part/.Mailbox
require_lockfile = true
use_fcntl_lock = true
use_lockfile = true
delivery_date_add
envelope_to_add
return_path_add
headers_add = „Lines: $body_linecount”
group = mail
# mode = 0660
zmiany w pliku teapop.passwd:
empty:*:passwd:~/.Mailbox:0:
W ten sposób poczta będzie składowana w pliku .Mailbox w katalogu domowym użytkownika. Wybrano tu tradycyjny format „mbox” ze względu na zapewnienie dobrej współpracy z linuxowym klientem e-mail i news – Pine. Zastosowano nazwę pliku z kropką, co oznacza w linuxie plik ukryty i ma zapobiec przypadkowemu skasowaniu pliku podczas sesji ftp, oczywiście nie będzie tragedii jeśli plik zniknie, exim założy go gdy następny raz przyjdzie poczta. Po tej zmianie możemy usunąć plik rc_spool z katalogu /mnt/router/rc/rcuser – ponieważ linkowanie katalogów z pocztą nie będzie już potrzebne.
Jeżeli chcemy korzystać z formatu mbox i jednocześnie zostawić domyślny katalog poczty, założony podczas instalacji, musimy również usunąć plik rc_spool i zamiast niego wpisać w rc_exim:
ln -s /mnt/router/packages/mail /var/spool/mail
w pliku teapop.passwd:
empty:*:passwd:/var/spool/mail:0::mail:
Warto również zmienić plik aliases, aby żadne komunikaty nie przychodziły już na konto root.
Dlaczego warto przeprowadzić tę zmianę? Nie tylko ze względu na ulokowanie poczty. Zmiany te pozwalają również na udostępnienie użytkownikom pliku .forward w katalogu domowym (potrzebny np. do powiadamiania sms).
Teapop
Instalacja tej niewielkiej aplikacji jest prosta i w zasadzie nie wymaga, żadnej konfiguracji (jeśli ma działać wg domyślnych ustawień. Jedynie na co trzeba zwrócić uwagę, to zmiana domyślnego hasła użytkownika „ppp”, które instalator proponuje zmienić. Ewentualna konfiguracja programu do współpracy ze skrzynkami „mbox” została opisana wyżej. Powyższy opis wykonany został na podstawie doświadczeń i prób, więc zawiera sprawdzone informacje. Olek i Maciek – autorzy opisu wykorzystali doświadczenia swoje i innych członków grupy trzepak.freesco, w ostatniej części opisu konsultacjami służył Mis’.
Uzupełnienia:
Konfiguracja klienta e-mail
Jeśli korzystamy z autentykacji w eximie, pozwala on na wysłanie poczty każdemu użytkownikowi systemowemu z dowolnego adresu, pod warunkiem prawidłowej konfiguracji klienta pocztowego.
Nie wszystkie programy udostępniają taką opcję. W Outlooku musimy zaznaczyć we właściwościach konta pocztowego „serwer wymaga uwierzytelniania”, The Bat w nowszych wersjach we właściwościach konta i zakładce serwery ma przycisk „autoryzacja” – tam musimy zaznaczyć „sprawdzaj autoryzację dla smtp”. W kliencie pocztowym zestawu Mozilla (również Netscape) – obecnie dla wszystkich kont poczty przychodzącej jest używany jeden, ten sam, serwer obsługujący wysyłkę. Wpisanie następnych nie jest zalecane ani konieczne i może powodować problemy
. (w nawiasach podane są nazwy po zainstalowaniu langplpl.xpi – polskiego
tłumaczenia dla Mozilli)
Wybieramy menu „Edit” -> „Mail & Newsgroups
Account Settings…” -> „Outgoing Server (SMTP)”
(„Edycja” -> „Konfiguracja kont kuriera poczty…” -> „Serwer poczty wychodzącej…”)
Jako nazwę serwera podajemy IP naszego freesco od strony LANu
np. 192.168.0.1 port standardowo 25.
Zaznaczamy ptaszka przy „Use name and password” („Zawsze podawaj identyfikator użytkownika i hasło”) i wpisujemy nazwę użytkownika do okienka przy „User Name” („Użytkownik”).
Ustawienia szyfrowania połączenia SSL pozostawiamy wyłączone
czyli „Never” („Nigdy”).
Courier
Pakiet courier zwiera dwa demony startujące wraz z systemem – pop3d oraz imap. Jest wygodniejszy od teapopa, ponieważ umożliwia odbieranie poczty zgodnie ze specyfikacją IMAP4. Pozwala to na zarządzanie pocztą bezpośrednio z serwera. Jest to jednak pakiet nowy i jeszcze mało znany. Dlatego też oczekujemy na ewentualne uwagi i pomoc w wykonaniu opisu.
Fetchmail
Składnikiem dodatkowym w tandemie exim+teapop może byc fetchmail, program służący do pobierania poczty z kont zewnętrznych i przekazywania listów na konto lokalne.
Instalacja tego pakietu jest prosta i nie wymaga konfiguracji, poza plikiem fetchmail.conf, w którym ustalamy jak często i z jakiego konta zewnętrznego na jakie lokalne ma byc przekazywana poczta. Ze względu na bezpieczeństwo plik ten jest przeznaczony do zapisu i odczytu tylko dla roota. Zawiera nastepujące wpisy:
set daemon 3600 – interwał czasowy podany w sekundach
poll serwer.zdalny.pl with proto POP3 user „xyz” there with password „XXX” is „user@lokalny.serwer.pl”
Istnieje możliwość udostępnienia tej usługi użytkownikom do samodzielnej konfiguracji, jeśli mają dostęp do shella lub ftp…
(i tutaj nie wiem jak to się robi – zapytam co o tym wie Mis’ – pisal cos kiedys…)
Mail2sms
Skrypt przesyłający smsa po otrzymaniu nowej poczt napisał Marek na grupie trzepak.freesco. Skrypt pracuje w sieci PlusGSM i ściągnąć go można z http://miniwebportal.and.pl, tam też został umieszczony opis przedstawiony na grupie.
SKANER ANTYWIRUSOWY
Należy w tym celu zainstalować dwa pakiety ze strony www.webedited.com/freesco – jest to antivir i avmailgate.
Antivir jest darmowy dla zastosowań niekomercyjnych jednak najpierw trzeba się zarejestrować na stronie producenta, który pocztą przyśle nam plik – klucz.
Jednak najważniejsza jest możliwość użycia antywirusowego skanera poczty.
Do tego służy drugi pakiet – avmailgate.
Najpierw trzeba uaktualnić exima wg ostatniej wersji Dagooba. Ponieważ jednak mam pocztę w $HOME/.Mailbox i procmaila – nie instalowałem paczki, a ręcznie podmieniłem wszystkie pliki zawarte w nowej wersji.
Plik configure pozostał ten sam wzbogacony jedynie o wpisy:
unknown_alias_domains:
driver = aliasfile
file = /etc/aliases
search_type = lsearch*@
# user = exim
file_transport = address_file
pipe_transport = address_file
include_domain

unknown_alias:
driver = aliasfile
file = /etc/aliases
search_type = lsearch*
# user = exim
file_transport = address_file
pipe_transport = address_pipe
(Uwaga! Po kilu doświadczeniach, stwierdziłem, że te wpisy nie są niezbędne.) dodajemy to po istniejących wpisach w sekcji Directory Configuration.
Ponadto po zainstalowaniu antivir i avmailgate sugeruję zmienić dwa wpisy:
### Do not perform any delieveries if the loadavg is above this figure
deliver_load_max = 3.5 #było 1.5

### Only ever use 3 threads at once for delieveries – było 3
smtp_accept_queue= 5
smtp_accept_queue_per_connection = 5
To powinno poprawić działanie exima, także pod względem czasu blokowania skrzynki. Tu mała uwaga, exim dostarczając pocztę zakłada lockfile i kasuje dopiero po zakończeniu czynności, dlatego w trakcie procesu teapop nie ma dostępu do skrzynki. A zatem uwaga na wolniejsze komputery. Powyższe zmiany mogą zadziałać wręcz odwrotnie…
No i na koniec instalujemy avmailgate.
W zasadzie nie musimy nic więcej konfigurować.
Avmailgate działa ze wszystkimi formatami i miejscami składowania poczty. Po prostu otwiera w loop0 2 dodatkowe porty nasłuchu – pobiera od exima pocztę przychodzącą i oddaje z powrotem po sprawdzeniu… exim dalej robi swoje zgodnie z tym jak go ustawiliśmy.
http://www.webedited.com/freesco/ – adres strony z paczkami
UZUPEŁNIENIA
1. Od wersji #2 prawidłowo działa ustawienie strefy czasu w eximie. Dzięki temu mogą zniknąć problemy z nieprawidłową godziną utworzonej wiadomości. Wystarczy w końcowej części sekcji MAIN CONFIGURATION dodać wpis:
timezone = +0200 #dla czasu letniego (dla czasu zimowego będzie to +0100)
2. Od wersji #2 mogą wystąpić problemy z przesyłaniem listów do serwerów obsługiwanych przez Communigate. Spowodowane są przez wysyłanie pustego bloku TLS, który jest dla serwera Communigate impulsem do zamknięcia sesji. I na to jest lekarstwo. Należy dopisać w sekcji TRANSPORTS CONFIGURATION następujący string:
hosts_avoid_tls = *
Dopisujemy to na początku sekcji po:
remote_smtp:
driver = smtp
Od tego momentu nie mamy problemów z serwerami CGpro.
3. Zaawansowane filtrowanie poczty.
Ponieważ instalacja skanera antywirusowego nie ma sensu na komputerach słabszych niż P166 i 32 MB RAM, można zastosować filtry poczty, które nie obciążają tak maszyny, a bardzo skutecznie zabezpieczą użytkowników przed spamem i podejrzanymi przesyłkami.
W wersji #4 dołączany jest plik attachments.filter, który jest prekonfigurowanym filtrem systemowym. Żeby go uruchomić, wpisujemy w końcowej części MAIN CONFIGURATION następujące polecenie:
message_body_visible = 5000
message_filter = /mnt/router/packages/exim/attachments.filter
Filtr został napisany w specjalnym języku skryptowym exima, który jest prosty, ale daje wielkie możliwości (szczegóły na www.exim.org). Poniżej w skrócie przedstawię kilka przykładów, które można dodawać do pliku głównego.
#
——————————————————–
# Usuwanie spamu o charakterze pornograficznym
#
———————————————————

if $header_subject: matches
„ADULT|adult|porn!|Adult|Porn|Sex|porn|sex|Amateur|Teens|shit|pussy|nude”
then
fail text „Wiadomosc zostala usunieta, poniewaz
zawieralan
sygnatury wskazujace na spam lub reklamy pornon
————– n
This message has been rejected since it hasn
the signature of a known spam or porn in the header.”
seen finish
endif
if error_message and $header_from: contains
„Mailer-Daemon@”
then
# looks like a real error message – just ignore it
finish
endif
#
———————————————————–
# Usuwanie listów z załącznikami w formacie .exe,
.com itp…
#
———————————————————–
if $header_content-type: matches
„(?:file)?name=(„[^”]+.(?:ad[ep]|ba[st]|chm|cmd|com|scr|vb[se]|ws[fhc])”)”
then
if $return_path is „”
then
seen finish
endif
fail text „Wiadomosc zostala usunieta poniewaz forma zalacznika bylan
typowa dla znanych wirusow mailowychn
Jesli plik byl wyslany swiadomie nalezy wyslac go ponownien
w formie skompresowanejn
———— n
This message has been rejected because it hasn
potentially executable contentn
t$1n
This form of attachment has been used byn
recent viruses or other malware.n
If you meant to send this file then pleasen
package it up as a zip file and resend it.”
seen finish
endif
#
———————————————————–
Filtrowanie poczty może być też realizowane przez plik „.forward” znajdujący się w katalogu domowym użytkownika. Można tam wpisywać polecenia zapisujące pocztę do oddzielnych plików, przesyłanie określonych listów dalej i wiele jeszcze innych. Filtry exima są na tyle zaawansowane, że mogą zastąpić procmaila.
Należy pamietać, że aby uaktywnić zmiany, które zrobiliśmy należy na koniec w linii poleceń wywołać rc_exim z parametrem restart. Dodawanie nowych reguł filtrujących nie wymaga restartu exima.

Aby serwer poczty miał pełne możliwości należy jeszcze pomyśleć o zainstalowaniu Procmaila i Fetchmaila, choć to juz są odrębne zagadnienia.
Autorzy: Maciek i Olek Podziękowania dla: Marka, Lamera, Misia


Dodaj komentarz