SENDMAIL "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." powiedzenie administratorów
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 ZAPIS MAILA WG. RFC 822 - MAIL
RFC 821 SESJA 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.
ROLA SERWERA DNS rekordy MX Rekordy MX odpowiadają za obsługę poczty kierowanej na dany adres /var/named/host.zone: pc-91-205.akademiki.uni.torun.pl. IN MX 1 158.75.91.205. pc-91-205.akademiki.uni.torun.pl. IN MX 5 158.75.91.206. inny_host.akademiki.uni.torun.pl. IN MX 1 158.75.91.205. inny_host.akademiki.uni.torun.pl. IN MX 5 158.75.91.206. Metoda weryfikacji: host -tmx pc-91-205.akademiki.uni.torun.pl
Storna www sendmaila http://www.sendmail.org/ Zanim jednak się rozpoczniemy instalację, wypada sprawdzić czy już nie jest zainstalowany. #>rpm q sendmail #>rpm e sendmail Przypominam ponadto o przekonfigurowaniu firewalla: konieczny otwarty port 25 smtp. Uwaga: prezentacja jest pisana dla wersji Sendmail 8.13.5
INSTALACJA SENDMAILA #>gzip d sendmail.8.13.5.tar.gz #>tar xf sendmail.8.13.5.tar #>cd sendmail-8.13.5 Szczęśliwie twórcy byli na tyle mili, że napisali własny skrypt do instalacji. #>./Build #>./Build install
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 bazę danych aliasów /usr/bin/hoststat podobnie link do /usr/sbin/sendmail, wyświetla statystyki połączeń z innymi hostami /usr/bin/purgestat podobnie link do /usr/sbin/sendmail, usuwa statystyki /usr/bin/mailq podobnie link do /usr/sbin/sendmail sendmail 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 Do tego folderu NIKT poza rootem nie powinien mieć dostępu!!!
Pliki jakie powinny zostać zainstalowane i ich znaczenie c.d. ALIASY Lista aliasów, czyli informacje, jaki użytkownik powinien odebrać mail adresowany do... /etc/mail/aliases lista plain text /etc/mail/aliases.db baza danych plik sendmaila aliases.db można uaktualnić poleceniem /usr/bib/newaliases Przykładowe wpisy w /etc/aliases: mailer-daemon: postmaster postmaster: root JaroslawPiersa: piersaj, root
Pliki jakie powinny zostać zainstalowane i ich znaczenie c.d. /etc/init.d/sendmail skrypt startujący 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/statistics można zmienić w konfiguracji. Statystyki programu, nazwę i lokalizację
Pliki jakie powinny zostać zainstalowane i ich znaczenie c.d. /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 HELP 214-2.0.0 This is sendmail version 8.13.5 214-2.0.0 Topics: 214-2.0.0 HELO EHLO MAIL RCPT DATA 214-2.0.0 RSET NOOP QUIT HELP VRFY 214-2.0.0 EXPN VERB ETRN DSN AUTH 214-2.0.0 STARTTLS 214-2.0.0 For more info use "HELP <topic>". 214-2.0.0 To report bugs in the implementation send email to 214-2.0.0 sendmail-bugs sendmail.org. 214-2.0.0 For local information send email to Postmaster at your site. 214 2.0.0 End of HELP info
Uruchomienie Sendmaila #>sendmail -bd uruchomienie jako demon w tle #>sendmial -bd uruchomienie jako demon na pierwszym planie #>sendmial -bd -q30m 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 pliku konfiguracyjnego
KONFIGURACJA SENDMAILA Plik konfiguracyjny Sendmaila to /etc/mail/sendmail.cf Oto jego mały fragment: # Access list database (for spam stomping) Kaccess hash -T<TMPF> /etc/mail/access # location of help file O HelpFile=/etc/mail/helpfile R$* $: $1 <@> mark addresses R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr> R@ $* <@> $: @ $1 unmark @host:... # strip local host from routed addresses R< $* > < @ $+ > : $+ $@ $>Recurse $3 R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
KONFIGURACJA SENDMAILA Pliki.mc Pliki mc ma prostszą strukturę i można go pisać z reki w vi z niskim prawdopodobieństwem błedu. (mc Master Config) Uwaga: plik piszemy w katalogu: /(dir)/sendmail-8.13.5/cf/cf #>vi sendmail.mc m4 za pomocą makr obrabia plik.mc i na jego podstaiw generuje plik.cf #>m4 sendmail.mc > sendmail.cf #>cp sendmail.cf /etc/mail/sendmail.cf lub prościej: #>make install-cf #>make install-cf CF=config gdzie config jest głównym plikiem mc
Struktura pliku mc: KONFIGURACJA SENDMAILA VERSIONID OSTYPE DOMAIN FEATURE local macro definitions MAILER LOCAL_CONFIG LOCAL_RULE_* LOCAL_RULESETS dnl komentarz do konca linii (Delete to NewLine) dnl uwaga na spację po "l"
KONFIGURACJA SENDMAILA Przykładowy plik.mc 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) Uwaga na apostrofy: otwierający: ` (odwrotny ten obok tyldy) zamykający: ' (prosty ten z cydzysłowem)
MASKOWANIE ADRESU Linijki do pliku.mc 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 (lub wyjąkti) od maskowania adresu całej domeny MASQUERADE_EXCEPTION_FILE(`filename') plik z domenami nie obejmowanymi maskowaniem
MASKOWANIE ADRESU 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 polaczeniu 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 RELAY_DOMAIN(domain) RELAY_DOMAIN_FILE(file) Akceptuje wiadomości pochodzące z domeny zadanej jako lub wylistowanej w pliku. Np: parametr sendmail.org 128.32 IPv6:2002:c0a8:02c7 IPv6:2002:c0a8:51d2::23f4 host.mydomain.com Uwaga: adresy protokołu IP w wersji 6 muszą być poprzedzone "Ipv6" FEATURE(`relay_entire_domain') Akceptuje całą domenę wraz z podomenami.
FILTROWANIE WIADOMOŚCI feature(`relay_based_on_mx') Odrzuca wiadomości adresowane na serwery, które nie mają rekordu mx w serwerze dns FEATURE(`accept_unresolvable_domains') Akceptuje waidomości z domen których nie można zweryfikować czy istnieją. FEATURE(`accept_unqualified_senders') Akceptuje wiadomośći od nie dających się zweryfikować urzetkowników. FEATURE(`blacklist_recipients') Umożliwia blokowanie poczty dla lokalnych użytkowników, hostów homen...
FILTROWANIE WIADOMOŚCI feature(`access_db', `hash -T<TMPF> /etc/mail/access_map') Filtrowanie oparte na bazie dostepu, do pliku access dopisujemy adresy lub/i domeny, które akceptujemy lub odrzucamy. Tworzenie bazy z pliku: makemap hash /etc/mail/access < /etc/mail/access przykładowy wpis: From:spammer aol.com REJECT From:cyberspammer.com REJECT Connect:cyberspammer.com REJECT Connect:TLD REJECT Connect:192.168.212 REJECT Connect:IPv6:2002:c0a8:02c7 RELAY Connect:IPv6:2002:c0a8:51d2::23f4 REJECT
FILTROWANIE WIADOMOŚCI Ogólna składnia: tag:adres/domena/host akcja Tagi: From pole nadawcy w kopercie To pole odbiorcy w kopercie Connect połączenie z (nadawca + adres)
FILTROWANIE WIADOMOŚCI 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 ### RFC821 i 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
FILTROWANIE WIADOMOŚCI 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
Linkografia sendmail 8.13.5/README 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