Referat

Transkrypt

Referat
SENDMAIL
Jarosław Piersa
AUS LabC inf3
WMiI UMK
"Nikt, kto choć raz nie skonfigurował programu sendmail nie jest prawdziwym administratorem.
Każdy kto brał się za to więcej niż raz, jest niespełna rozumu."
RFC 822 mail (Request For Comments)
Definiuje standard postaci e-maila. Dzięki temu można wysłać pocztę z maszyny unixowej na windows
i da się tę wiadomość odczytać
Mail składa się z nagłówka i ciała (treści??) (header and body) . W nagłówku zdefiniowane są różne
parametry dotyczące maila. Po nagłówku znajduje się jedna linia pusta i po niej następuje treść (body)
wiadomości. Trzy podkreślenia „___” oznaczać mają „małpę” tj. @, (a), at.
Np.
From ­ Fri Nov 18 13:36:12 2005
X­UIDL: 1130538968.11
X­Mozilla­Status: 0001
X­Mozilla­Status2: 00000000
Return­Path: <piersaj___mat.uni.torun.pl>
Received: from mx4.go2.pl (mx4 [192.168.2.44])
by b29 SERVER; Fri, 18 Nov 2005 13:34:12 +0100
X­mf: first3.pl v0.6
Received: by mx4.go2.pl (Postfix)
id 7B28857D5BA; Fri, 18 Nov 2005 13:34:12 +0100 (CET)
Delivered­To: piersaj___o2.pl
Received: from mx4.go2.pl (mx4 [127.0.0.1])
by mx4.go2.pl (Postfix) with ESMTP id 61AE257D63B
for <piersaj___o2.pl>; Fri, 18 Nov 2005 13:34:12 +0100 (CET)
Received: from Leon.mat.uni.torun.pl (leon.mat.uni.torun.pl [158.75.2.17])
by mx4.go2.pl (Postfix) with ESMTP
for <piersaj___o2.pl>; Fri, 18 Nov 2005 13:34:12 +0100 (CET)
Received: from juliusz.mat.uni.torun.pl (Juliusz [158.75.2.230])
by Leon.mat.uni.torun.pl (8.13.2/8.13.2) with SMTP id jAICXABL026320
for piersaj___o2.pl; Fri, 18 Nov 2005 13:33:59 +0100
Date: Fri, 18 Nov 2005 13:33:10 +0100
From: Jaroslaw Piersa <piersaj___mat.uni.torun.pl>
Message­Id: <200511181233.jAICXABL026320___Leon.mat.uni.torun.pl>
X­Virus­Scanned: by amavisd­new
To: undisclosed­recipients:;
ala ma kota
jp
RFC 821 Simple Mail Transfer Protocol
Definiuje sposób adresowania oraz dostarczania maila do adresata, poprzez protokół SMTP.
SMTP jest protokołem klient- serwer opartym o TCP. Po nawiązaniu połączenia wymieniane są
komunikaty między klientem, a serwerem. Komunikaty mają postać czteroznakowych poleceń,
odpowiedzi serwera są trój cyfrowymi kodami. Klient podaje serwerowi treść wiadomości oraz inne
dane niezbędne do jej dostarczenia adres odbiorcy, nadawcy, temat itp. Dane te nazywa się kopertą
(envelope).
Obecnie w użyciu jest ESMTP, czyli Enhenced SMTP.
1
Przykład działania serwera SMTP:
juliusz:2% telnet leon 25
Trying 158.75.2.17...
Connected to Leon.
Escape character is '^]'.
220 Leon.mat.uni.torun.pl ESMTP Sendmail 8.13.2/8.13.2; Fri, 18 Nov 2005 13:33:10 +0100
helo juliusz.mat.uni.torun.pl
250 Leon.mat.uni.torun.pl Hello Juliusz [158.75.2.230], pleased to meet you
mail from: piersaj___mat.uni.torun.pl
250 2.1.0 piersaj___mat.uni.torun.pl... Sender ok
rcpt to: piersaj___o2.pl
250 2.1.5 piersaj___o2.pl... Recipient ok
data
354 Enter mail, end with "." on a line by itself
ala ma kota
jp
.
250 2.0.0 jAICXABL026320 Message accepted for delivery
quit
221 2.0.0 Leon.mat.uni.torun.pl closing connection
Connection to Leon closed by foreign host.
Oczywiście do redagowania i wysyłania poczty mało kto korzysta z tego sposobu. Wyręczamy się
MUA (Mail User Agent) np. Thunderbird, Pine, Outlook , który po przygotowaniu wiadomości łączy się
z serwerem MTA (Mail Transfer Agent, lub Mail Delivery Agent) i przekazuje mu wiadomość. To
Właśnie MTA odpowiada za dostarczenie wiadomości do adresata w tym: ustalenie adresu, ustalenie
drogi przekazu i przekazanie wiadomości.
W tym miejscu dochodzimy do Sendmaila.
Jest to po prostu jeden z MTA. Tak dokładniej jest najpopularniejszym i jednym z najstarszych, (co nie
oznacza, że najprostszym i najbezpieczniejszym...) Pierwsza jego wersja została wydana w 1983r.
Twórcą jest Eric Allman, który napisał również Delivermail – swoistego poprzednika Sendmaila (1979).
Szacuje się, że obecnie ok. 40% poczty jest obsługiwana przez sendmaila. Sendmail przez wiele osób
jest uznawany za wyjątkowo dziurawy, a jego konfiguracja – skomplikowana.
ROLA SERWERA DNS
Jasne jest, że wiadomość dochodzi do adresata na podstawie adresu – pisanego zazwyczaj z ręki w
formie kanonicznej. Często też obsługą poczty na kilku hostach zajmuje się jeden serwer nie
umieszczony na żadnym z nich. MTA pyta się serwera DNS o rekordy Mail eXchange lub prościej –
MX. Serwery pocztowe muszą mieć rekord MX w publicznym DNSie aby mogła do niech dochodzić
poczta. Więcej hosty, na które może być wysyłana poczta, a które nie mają postawionego serwera
pocztowego również muszą mieć rekord MX przekierowujący tę pocztę na działający serwer
pocztowy. Liczba po oznaczeniu rekordu oznacza priorytet wyboru. W pierwszej kolejności wybierany
jest rekord o niższej wartości. Jeżeli próba nie powiodła się wybierany jest rekord o następnym
priorytecie.
Po polsku:
pc­257­357.akademiki.uni.torun.pl. IN
pc­257­257.akademiki.uni.torun.pl. IN
inny_host.akademiki.uni.torun.pl. IN
MX
MX
MX
1
5
1
158.75.257.257.
158.75.257.257.
158.75.257.257.
Przed instalacją należy również skonfigurować firewall aby przepuszczał połączenia na port 25
(SMTP)
2
INSTALACJA SENDMAILA
Storna www:
http://www.sendmail.org/
z której można pobrać źródła programu.
Referat jest napisany dla wersji Sendmail 8.13.5
Wpierw sugeruję sprawdzić czy już jakiegoś sendmaila nie mamy zainstalowanego i jeżeli tak, usunąć
go:
#>rpm –q sendmail
#>rpm –e sendmail
rozpakować paczkę można:
#>gzip –d sendmail.8.13.5.tar.gz
#>tar xf sendmail.8.13.5.tar
Szczęśliwie twórcy byli na tyle mili, że napisali własny skrypt do instalacji. Choć de facto zbyt złożony
to on nie jest, polecam zerknąć...
#>./Build
#>./Build install
Uwaga: u mnie w domu na program miał obiekcje do nieistniejących katalogów:
mkdir /usr/man
/usr/man/man1
/usr/man/man8
Pliki jakie powinny zostać zainstalowane i ich znaczenie:
•
/usr/sbin/sendmail
binaria sendmaila
•
/etc/mail/sendmail.cf
plik konfiguracyjny Sendmaila, bez niego program się w
ogóle nie uruchomi
•
/usr/bin/newaliases
link do /usr/sbin/sendmail sendmail wywołany jako
newaliases odświeża listę aliasów
•
/usr/bin/hoststat
podobnie link do /usr/sbin/sendmail
•
/usr/bin/purgestat
podobnie link do /usr/sbin/sendmail
•
/usr/bin/mailq
podobnie link do /usr/sbin/sendmail, program wywołany jako
mailq wydrukuje kolejkę wiadomości oczekujących na wysłanie
•
/var/spool/mqueue
folder służący do przechowywania oczekujących na
wysłanie maili, sugerowane prawa drwx------ sugerowany właściciel: root.
•
/etc/mail/aliases
lista aliasów, czyli informacje, jaki użytkownik powinien
/etc/mail/aliases.db
odebrać mail adresowany do “...”, aliases.db można
odświeżyć poleceniem /usr/bib/newaliases
Przykładowe wpisy w /etc/aliases:
mailer-daemon: postmaster
postmaster: root
•
/etc/init.d/sendmail
znajomy folder.... przykładowa treść skryptu:
if [ -f /usr/sbin/sendmail -a -f /etc/sendmail.cf ]; then
(cd /var/spool/mqueue; rm -f [lnx]f*)
/usr/sbin/sendmail -bd -q30m &
echo -n ' sendmail' >/dev/console
fi
•
/etc/mail/helpfile
Plik pomocy używany po wydaniu komendy HELP podczas
sesji SMTP. Jego lokalizację i nazwę można określać w konfiguracji. W starszych
wersjach:
sendmail.hf
•
/etc/mail/statistics
Statystyki programu, nazwę i lokalizację można zmienić w
konfiguracji.
Uruchomienie Sendmaila niektóre parametry:
#>sendmail ­bd uruchomienie jako demon w tle
#>sendmial ­bD
uruchomienie jako demon na pierwszym planie
#>sendmial ­bd ­q30m
3
wysyłanie wiadomości zakolejkowanych co 30 min, inne jednostki:
s, m, h, d, w
#>sendmial ­bp
patrz /usr/bin/mailq
#>sendmial ­C file
użyj inngo niż domyślny pliku konfiguracyjnego
KONFIGURACJA SENDMAILA
Plik konfiguracyjny Sendmaila to /etc/mail/sendmail.cf Oto jego mały fragment:
# location of help file
O HelpFile=/etc/mail/helpfile
R$* $: $1 <@> mark addresses
R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
R@ $* <@> $: @ $1 unmark @host:...
Na pierwszy rzut oka wygląda naplik binarny otworzony edytorem teksu, przepleciony z tekstem ascii.
W rzeczywistości taka jest jego składnia i można go edytować z ręki. Wychodząc naprzeciw
oczekiwaniom użytkowników Autorzy jednak dodali skrypt upraszczający tworzenie pliku
konfiguracyjnego.
W tym celu tworzymy plik sendmail.mc (mc – Master Config). Następnie po napisaniu konfiguracji w
tym pliku przetwarzamy go za pomocą skryptu m4, który za pomocą odpowiednich makr stworzy
plik .cf bazując na ustawieniach podanych w pliku mc.
#>m4 sendmail.mc > sendmail.cf
Struktura pliku mc:
VERSIONID
OSTYPE
DOMAIN
FEATURE
local macro definitions
MAILER
LOCAL_CONFIG
LOCAL_RULE_*
LOCAL_RULESETS
Komentarze:
dnl komentarz do końca wiersza (Delete to NewLine) uwaga na spacje!!
Przykładowy plik i opis:
include(`../m4/cf.m4')
VERSIONID(`sendmail.mc 18 nov 2005')
OSTYPE(linux)
DOMAIN(`generic')
define(HELPFILE , `/etc/mail/helpfile')
FEATURE(nouucp, `nospecial')
MASQUERADE_AS(ourco.com)
MAILER(local)
MAILER(smtp)
A teraz co to oznacza...
include(`../m4/cf.m4')
Wczytuje stosowny plik z makrami, który znacznie upraszcza
tworzenie pliku cf
VERSIONID(`sendmail.mc 18 nov 2005')
Informacje o wersji pliku – autor, data, gdzie i dla
jakiego sprzetu pisany itp. Znaczenie ma raczej dla administratora niż dla sendmaila
4
OSTYPE(linux)
Najważniejsza linijka!! Definicja systemu operacyjnego, bez niej
dalsza obróbka pliku mc skończy się błędami.
DOMAIN(`generic’)
nazwa pliku opisującego konfiguracje i definicje dla domeny,
`generic’ jest domyślna i “zazwyczaj” pasuje
define(HELPFILE , `/etc/mail/helpfile’) Przypisanie zmiennej wartości, Uwagi: brak przypisania
powoduje ustawienie wartości domyślnej, apostrofy są istotne!!! Zmiennych jest DUŻO i po listę
wszystkich odsyłam do pliku README. W tym wypadku jest to ścieżka do pliku pomocy do komendy
HELP
podczas połączenia.
FEATURE(nouucp, `nospecial’)
Dodatkowe funkcje programu i ewentualne parametry.
Featurów jest DUŻO i odsyłam do stosownego pliku (dir)/sendmail-8.13.5/cf/README
działanie niektórych funkcji zostanie podana później.
MAILER(local)
Definicje mailera (czyli interfejsu), który ma być obsługiwany.
local - lokalny
smtp - wiadomo
uucp – Unix to UnixCopy Program mailer
inne – odsyłam do README
MASKOWANIE ADRESU
MASQUERADE_AS(`host.domain')
ukrywa adres własnego hosta, z którego mail
został wysłany na host.domain
MASQUERADE_DOMAIN(`otherhost.domain') ukrywa adres, obcego hosta z którego został
wysłany list, listę hostów można oddzielać spacjami
MASQUERADE_DOMAIN_FILE(`filename')
maskowanie adresów zadanych w pliku,
MASQUERADE_EXCEPTION(`host.domain')
Wyjątek od maskowania adresu całej domeny
MASQUERADE_EXCEPTION_FILE(`filename') plik z domenami nie obejmowanymi
maskowaniem
feature(masquerade_entire_domain)
w połączeniu z masquerade_domain() i
masquerade_as() ukrywa adres całej domeny np. host.otherhost.domain nie byłby
maskowany
feature(masquerade_envelope)
w połączeniu z masquerade_as() ukrywa adresy całej
koperty, a nie tylko nagłówka
feature(local_no_masquerade)
zapobiega maskowaniu poczty wysyłanej lokalnie
EXPOSED_USER(`usernames')
niektórzy użytkownicy zawsze powinni być odkryci: np
root, użytkownicy tak zadani nie będą mieli maskowanych adresów
FILTROWANIE WIADOMOŚCI
feature(`relay_based_on_MX')
Akceptuje wiadomości adresowane na serwery, które
mają rekord mx w serwerze dns
RELAY_DOMAIN(domain)
RELAY_DOMAIN_FILE(file)
Akceptuje wiadomości pochodzące z domeny
zadanej jako
parametr lub wylistowanej w pliku
FEATURE(`relay_entire_domain')
Akceptuje całą domenę wraz z poddomenami.
FEATURE(`accept_unresolvable_domains')
Akceptuje wiadomości z domen których nie można
zweryfikować czy istnieją
FEATURE(`accept_unqualified_senders')
Akceptuje wiadomości od nie dających się
zweryfikować użytkowników.
FEATURE(`blacklist_recipients')
Umożliwia blokowanie poczty dla lokalnych
użytkowników, hostów, domen...
feature(`access_db', `hash -T<TMPF> /etc/mail/access_map')
filtrowanie oparte na bazie dostępu, do pliku access dopisujemy adresy lub/i domeny
które akceptujemy lub odrzucamy
Przykłady konfiguracji pliku dostępu:
From:spammer___aol.com
From:cyberspammer.com
Connect:cyberspammer.com
Connect:TLD
Connect:192.168.212
Connect:IPv6:2002:c0a8:02c7
REJECT
REJECT
REJECT
REJECT
REJECT
RELAY
5
Connect:IPv6:2002:c0a8:51d2::23f4
REJECT
tworzenie bazy z pliku:
makemap hash /etc/mail/access < /etc/mail/access
Tagi:
From To
Connect-
pole nadawcy w kopercie
pole odbiorcy w kopercie
połączenie z dotyczy zarówno nadawcy jak i adresu
Akcje:
OK
- akceptacja
RELAY
- akceptacja, jest kilka różnic miedzy OK, a RELAY
REJECT
- odesłanie do nadawcy z domyślną wiadomością błędu
DISCARD
- brak akceptacji
skip
- pominięcie sprawdzenia, podęcie domyślnej decyzji
###“tekst”
- odesłanie wiadomości z kodem błędu ### RFC821i raportem błędu “tekst”, tekst nie
musie
być cytowany, ale jest to wskazane
ERROR:###”tekst”
- j/w tyle, że bardziej czytelne
ERROR:D.S.N:###”tekst”
- j/w tyle, że kod błędu dotyczy RFC 1983
QUARANTINE:”tekst” - wiadomość przeniesiona do kwarantanny + wiadomość zwrotna
inny przykład:
From:cyberspammer.com
ERROR:"550 We don't accept mail from spammers"
From:okay.cyberspammer.com OK
Connect:sendmail.org
RELAY
To:sendmail.org
RELAY
Connect:128.32
RELAY
Connect:128.32.2
SKIP
Connect:IPv6:1:2:3:4:5:6:7
RELAY
Connect:suspicious.example.com
QUARANTINE:Mail from suspicious host
To:badlocaluser@
ERROR:550 Mailbox disabled for badlocaluser
Nie żeby to było już wszystko co o sendmailu da się powiedzieć (czy choćby 25%), ale na początek
mam nadzieję wystarczy.
I jeszcze jedno: tekst był pisany o różnych porach i po różnej ilości wypitej kofeiny... Jeżeli zdarzy się,
że referat twierdzi co innego niż dokumentacja... należy wierzyć dokumentacji.
linkografia:
/root/sendmail-8.13.5/cf/README
http://www.networkcomputing.com/unixworld/tutorial/008/008.txt.html#over
http://www.networkcomputing.com/unixworld/tutorial/01/01.txt.html
http://zlobek.tcz.wroclaw.pl/dzial.php3?dzial=7
http://www.sendmail.org/
http://en.wikipedia.org/wiki/Sendmail
http://www.nmr.mgh.harvard.edu/Sendmail8.9/ConfigFiles.shtml
http://rfc.net/rfc821.html
6

Podobne dokumenty