Sendmail FAQ & HowTo by SinusPL --------------------------------- 1. Dlaczego? 2. Co potrzebujemy? 3. Przygotowania. 4. Kompilacja i instalacja "cyrus-sasl" 5. Kompilacja i instalacja "spamassasin" 6. Kompilacja i instalacja "amavis-perl" i "uvscan" 7. Kompilacja i instalacja "procmail" 8. Kompilacja i instalacja "sendmail" 9. I co teraz mamy? 1. Dlaczego? Ta dokumentacja powstala dla celow kanalu #linux.pl na IRCnecie, na ktorym przesiaduja dziesiatkami "spece" od wszystkiego, poczynajac od nieznajomosci komend takich jak ls, ln, md, rm, less a o nieumiejetnosci obslugi edytora vi ktory _jest_ podstawowym edytorem w unixie (upodobania do emacs, pico, mcedit zostawiam tutaj na stronie, poniewaz edytory te nie naleza do kazdego swiezo zainstalowanego systemu unixowego). Po przejsciu wszystkich krokow opisanych tutaj bedziemy mieli sendmaila z autentyfikacja, skanerem antywirusowym i filtrem blokujacym spam. 2. Co potrzebujemy? Potrzebujemy co najmniej spakowane zrodla sendmaila. Jezeli planujemy zrobic autentyfikacje (SMTP AUTH) to potrzebujemy jeszcze cyrus-sasl. Dla osob nie lubiacych spamu proponuje zciagniecie tez spamassasin. Dla naszych kochanych uzytkownikow oprogramowania MS potrzebujemy tez skaner antywirusowy amavis-perl. Wszystkie wyzej wymienione programy mozna pobrac przez http albo ftp z mojego serwera pod adresami: - http://ftp.sinuspl.net/pub/src/ - ftp://ftp.sinuspl.net/pub/src/ Na systemach FreeBSD potrzebujemy wylacznie aktualne porty. 3. Przygotowania. Jezeli systemem jest Linux, tworzymy (jesli jeszcze nie istnieje) folder "/usr/src". W nim tworzymy folder "sendmail", do ktorego najpierw zciagamy poszczegone pakiety zrodlowe: cd /usr mkdir src cd src mkdir sendmail cd sendmail ftp [...] lub wget [...] nastepnie sprawdzamy, czy wszystko mamy (numerki po nazwie pakietu oznaczaja numer wersji, zciagamy zawsze najnowsza, ktora znajdziemy): ls -al total 3396 drwxr-xr-x 2 root root 4096 Oct 13 14:01 . drwxr-xr-x 60 root root 4096 Oct 13 13:52 .. -rw-r--r-- 1 root root 283977 Apr 7 2001 amavis-perl-11.tar.gz -rw-r--r-- 1 root root 528252 Mar 24 2001 cyrus-sasl-1.5.27.tar.gz -rw-r--r-- 1 root root 532504 Oct 4 17:29 Mail-SpamAssassin-2.42.tar.gz -rw-r--r-- 1 root root 226817 Oct 10 00:55 procmail-3.22.tar.gz -rw-r--r-- 1 root root 1867436 Aug 27 04:09 sendmail.8.12.6.tar.gz po czym rozpakowujemy poszczegolne pliki: tar xfz amavis-perl-11.tar.gz tar xfz cyrus-sasl-1.5.27.tar.gz tar xfz Mail-SpamAssassin-2.42.tar.gz tar xfz procmail-3.22.tar.gz tar xfz sendmail.8.12.6.tar.gz i sprawdzamy, czy sie wszystko ladnie rozpakowalo: ls -al total 3416 drwxr-xr-x 7 root root 4096 Oct 13 14:07 . drwxr-xr-x 60 root root 4096 Oct 13 13:52 .. drwxrwxrwx 5 640 man 4096 Apr 6 2001 amavis-perl-11 -rw-r--r-- 1 root root 283977 Apr 7 2001 amavis-perl-11.tar.gz drwxrwxrwx 15 sinuspl sinuspl 4096 Mar 24 2001 cyrus-sasl-1.5.27 -rw-r--r-- 1 root root 528252 Mar 24 2001 cyrus-sasl-1.5.27.tar.gz drwxr-xr-x 13 copy copy 4096 Oct 4 17:29 Mail-SpamAssassin-2.42 -rw-r--r-- 1 root root 532504 Oct 4 17:29 Mail-SpamAssassin-2.42.tar.gz drwxr-xr-x 7 28286 users 4096 Sep 11 2001 procmail-3.22 -rw-r--r-- 1 root root 226817 Oct 10 00:55 procmail-3.22.tar.gz drwxr-xr-x 21 1037 1700 4096 Aug 27 03:42 sendmail-8.12.6 -rw-r--r-- 1 root root 1867436 Aug 27 04:09 sendmail.8.12.6.tar.gz Jak widzimy powstaly teraz foldery z plikami zrodlowymi. Jezeli systemem jest FreeBSD, wystarczy, ze mamy w /usr/ports rozpakowane aktualne porty. 4. Kompilacja i instalacja "cyrus-sasl" Na systemach linuxowych kompilacja i instalacja jest calkiem prosta: cd cyrus-sasl-1.5.27 ./configure --enable-static --enable-login --enable-auth-sasldb --with-pwcheck=/var/pwcheck --with-rc4=openssl make make install Na FreeBSD jeszcze latwiejsza: cd /usr/ports/security/cyrus-sasl make install (wybieramy nastepujace opcje: PWCHECK SASLAUTHD) 5. Kompilacja i instalacja "spamassasin" Na Linuxie: cd Mail-SpamAssassin-2.42 ./configure make make install Na FreeBSD nie musimy nic robic; spamassasin nalezy do standardowego systemu. 6. Kompilacja i instalacja "amavis-perl" i "uvscan" Najpierw instalacja pod FreeBSD: cd /usr/ports/security/amavis-perl make nie robimy tutaj "make install" poniewaz amavis modyfikuje plik konfiguracyjny sendmaila czego _jeszcze_ nie potrzebujemy. Ewentualnie (jezeli instalacja nie nastepuje samoczynnie z portow) amavis-perl potrzebuje "uvscan" firmy McAfee. Pod FreeBSD instalacja wyglada tak: cd /usr/ports/security/vscan make install Nastepnie ponownie kompulujemy amavis-perl komenda: cd /usr/ports/security/amavis-perl make Pod Linuxem robimy to tak: cd amavis-perl-11 ./configure make make install Amavis potrzebuje tez pod linuxem jakiegos skanera antywirusowego. Bierzemy ten od firmy McAfee, zciagamy go ze strony www.nai.com, albo z mojego serwera. 8. Kompilacja i instalacja "sendmail" Majac skompilowany cyrus-sasl, amavis-perl, procmail, sendmail i skaner uvscan mozemy przystapic do niezwykle prostej czynnosci jaka jest tworzenie pliku konfiguracyjnego dla sendmaila, aby uzywal wszystkie uprzednio przygotowane programy. Uzywamy do tego jezyka skryptowego "m4" ktory jest uzywany miedzy innymi do tworzenia dlugich plikow konfiguracyjnych np. do sendmaila. Tworzymy najpierw folder /etc/mail (jesli jeszcze nie istnieje, co jest bardzo malo prawdopodobne). cd /etc mkdir mail cd mail W tym folderze tworzymy pusty plik sendmail.mc touch sendmail.mc Edytujemy go naszym wybranym edytorem (tutaj vi, albo lepiej vim). Pod FreeBSD wpisujemy to tego pliku nastepujace rzeczy: dnl ################################################# dnl ### sendmail.mc by SinusPL @ 2002.10.10 19:33 ### dnl ################################################# include(`/usr/share/sendmail/cf/m4/cf.m4') divert(0) VERSIONID(`$Id: sendmail.mc,v 8.12.6 2002/10/10 01:26:02 sinuspl Exp $') OSTYPE(freebsd4) DOMAIN(generic) FEATURE(access_db) FEATURE(local_procmail) FEATURE(mailertable) FEATURE(virtusertable) MAILER(local) MAILER(smtp) define(`confAUTH_OPTIONS', `A') TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') define(`confAUTH_MECHANISMS',`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN') define(`confRUN_AS_USER',`root:mail') define(`confMAX_MESSAGE_SIZE', `104857600') define(`confMAX_MIME_HEADER_LENGTH', `256/128') define(`confNO_RCPT_ACTION', `add-to-undisclosed') define(`confPRIVACY_FLAGS', `noexpn,novrfy') define(`confPROCMAIL_MAILER_PATH',`/usr/local/bin/procmail') define(`confALIAS_FILE', `/etc/mail/aliases') define(`confSTATUS_FILE', `/etc/mail/statistics') define(`confUSERDB_SPEC', `/etc/mail/userdb.db') define(`confCW_FILE', `/etc/mail/sendmail.cw') DAEMON_OPTIONS(`Name=IPv4, Family=inet') DAEMON_OPTIONS(`Name=IPv6, Family=inet6') define(`confQUEUE_LA', `10') define(`confREFUSE_LA', `20') define(`confSMTP_LOGIN_MSG', `mx1.sinuspl.net Sendmail $v/av/auth/gs/shell; $b') define(`confTRUSTED_USERS', `www sinuspl') Mozemy a raczej musimy zmienic wiele tych opcji. Oznaczaja one: define(`confMAX_MESSAGE_SIZE', `104857600') - maksymalna wielkosc maila w bajtach define(`confPROCMAIL_MAILER_PATH',`/usr/local/bin/procmail') - sciezka do procmaila DAEMON_OPTIONS(`Name=IPv6, Family=inet6') - te linijke mozna wywalic, jezeli nie uzywamy IPv6 badz nie chcemy aby mail dzialal na tym protokole define(`confSMTP_LOGIN_MSG', `host.domena.pl Sendmail $v/av/auth; $b') - ta linijka ustawia to, co bedzie sie pokazywalo jako tzw. SMTP-Greeting: telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mx1.sinuspl.net ESMTP Sendmail 8.12.6/av/auth/gs/shell; Sun, 13 Oct 2002 20:33:13 +0200 (CEST) define(`confTRUSTED_USERS', `www sinuspl') - ci userzy systemowi beda mogli uzywac sendmaila bez zadnych restrykcji. Wazne, aby dodac tutaj np. usera pod ktorym dziala apache, aby mogl poprawnie wysylac maile. [...] TO BE CONTINUED... [...] 9. I co teraz mamy? Jezeli dotarlismy tutaj, to jestesmy szczesliwymi posiadaczami sendmaila z autoryzacja, skanerem antywirusowym i filtrem blokujacym spam.