Warning: Missing argument 2 for artykul(), called in /homez.143/epubzmnd/linuxpub/old/lib/druk.php on line 22 and defined in /homez.143/epubzmnd/linuxpub/old/lib/artykul.php on line 8
LinuxPub : Sendmail AUTH STARTTLS : Dokumentacja, Wiadomości, Pomoc, Forum, Howto, Manual, Bezpieczeństwo Fragment strony http://linuxpub.pl/. Wydrukowano:23.05.2012 03:02
Powrót Powrót 
 
Wyślij znajomemu

Sendmail + AUTH+ STARTTLS
Mateusz Drach


Wstęp

Nie jestem guru linuksowym, jestem zwykłym userem, który od czasu do czasu zmuszony jest do poznawania i wprowadzania w życie nowych rozwiązań. Na niniejszej stronie zamieszczam parę wskazówek, o konfiguracji sendmaila. Jeśli komuś się to przyda to dobrze, jeśli nie to trudno ;))). Strona jak widać jest w powijakach, może kiedyś zrobię coś lepszego.

Źródła:
http://www.sendmail.org/~ca/email/auth.html

http://www.sendmail.org/~ca/email/starttls.html

http://przedszkole.frame.pl/wilkoszewski/?sendmail <- polecam

SENDMAIL+AUTH

1. czy sendmail skompilowany z sasl (dla RH zazwyczaj jest): sendmail -d0.1 -bv root, pokazalo sie:

Version 8.11.2
Compiled with: LOG MATCHGECOS MIME7TO8 MIME8TO7 NAMED_BIND NETINET
NETUNIX NEWDB QUEUE SASL SCANF SFIO SMTP STARTTLS USERDB XDEBUG

Jest sasl wiec ok.

2. w /etc/mail/sendmail.mc dodajemy:
TRUST_AUTH_MECH(` PLAIN')dnl
define(`confAUTH_MECHANISMS', `PLAIN')dnl

UWAGA: W przypadku, gdy poczta ma byc wysyłana z outlooka, TRZEBA dodać także mechanizm LOGIN, dla nestcape wystarcza PLAIN.

potem: m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

drobna uwaga: w zależności od przyjętych opcji przy kompilacji, sendmail może czytać swój plik konfiguracyjny sendmail.cf z /etc/mail/sendmail.cf

3. w pliku /usr/lib/sasl/Sendamil.conf wpisujemy linijke:
pwcheck_method:pam

3a. lub (jak podaje Andrzej Wilkoszewski ):
pwcheck_method:shadow
i do pkt. 5

4. w katalogu /etc/pam.d/ utwórz plik smtp z wpisami identycznymi jak w /etc/pam./pop (jeśli w Sendmail.conf jest shadow to oczywiscie nie trzeba tego robic)

5. i na koniec /etc/init.d/sendamil restart

6. i jeszcze sprawdzian: telnet localhost 25 a potem ehlo localhost i powinno pojawić AUTH PLAIN.

W ten sposób mamy załatwioną autoryzację wysyłania listów.

Pozostaje jednak jeszcze jeden problem, otóż łącząc sie z serwerem SMTP userzy muszą podać hasło, jeśli używamy do autoryzacji mechanizmu PLAIN i/lub LOGIN hasła te "idą" otwartym tekstem, są zatem bardzo łatwe do przechwycenia (podobnie ma sie sprawa z pop3). Aby sie zabezpieczyc przed tego typu działaniem warto skonfigurować sendmaila tak, aby użwywał oprócz AUTH także STARTTLS. Wtedy połączenie klient-serwer bedzie szyfrowane i w ten sposób zabezpieczone przed niecnymi podsłuchującymi ;)).

Co będzie potrzebne:
1. źródła sendmaila
2. openssl
3. sfio najlepiej źródła - http://www.megaloman.com/~hany/_data/SRPM/doors3.0/sfio-1999-1.src.rpm

i zdaje się, że to wszystko.
A teraz do roboty:
0. instalujemy openssl i sfio oraz sfio-devel
1. rozpakowujemy źródła sendmaila (warto poczytać readme)
2. idziemy do katalogu devtools/Site i tworzymy plik site.config.m4, którym umieszczamy :

define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX -DLDAPMAP')
define(`confENVDEF', `$(RPM_OPT_FLAGS) -DXDEBUG=0 -DTCPWRAPPERS ')
define(`confLIBS', `-lnsl -lwrap -lldap -llber -lcrypt -lgdbm')
define(`confLDOPTS', `-s')
define(`confMANOWN', `root')
define(`confMANGRP', `root')
define(`confMANMODE', `644')
define(`confMAN1SRC', `1')
define(`confMAN5SRC', `5')
define(`confMAN8SRC', `8')

APPENDDEF(`confENVDEF', `-DSASL')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl')

APPENDDEF(`confLIBDIRS', `-L/usr/local/lib')
APPENDDEF(`confINCDIRS', `-I/usr/local/include/sfio')
define('confSTDIO_TYPE', `portable')
APPENDDEF(`confENVDEF', `-DSFIO')
APPENDDEF(`confLIBS', `-lsfio')
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS')
APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')

To co niebieskie to standardowa konfiguracja z RH (LDAP, TCPWRAPERS), to co czerwone jest konieczne dla AUTH i to co czarne jest konieczne dla STARTTLS.

UWAGA: czasami trzeba również dodać ścieżki dla sasl.

3. wracamy do głównego katalogu cd ../../ i tu piszemy sh Build, jeśli wszystko pójdzie dobrze robimy make install i sendmail już jest gotwy do działania, no prawie gotowy pozostaje jeszcze utworzyć certyfikaty i wygenerować nowy plik sendmail.cf.

4. do /etc/mail/sendmail.mc dopisujemy:

define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs')dnl
define(`confCACERT_PATH', `/usr/lib/ssl/certs')dnl
define(`confCACERT', `CERT_DIR/CAcert.pem')dnl
define(`confSERVER_CERT', `CERT_DIR/MYcert.pem')dnl
define(`confSERVER_KEY', `CERT_DIR/MYkey.pem')dnl
define(`confCLIENT_CERT', `CERT_DIR/MYcert.pem')dnl
define(`confCLIENT_KEY', `CERT_DIR/MYkey.pem')dnl

i oczywiście

m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

Odpowiednie certyfikaty i klucze przy konfiguracji jak wyżej trzeba umieścić w /etc/mail/certs, ze wszystkimi trzeba zrobić:

ln -s $C `openssl x509 -noout -hash < $C`.0

i potem już tylko pozostaje /etc/init.d/sendmail restart.

Można także pobawić się w generowanie certyfikatów dla userów i na tej podstawie ich autoryzować.

CERTYFIKATY.

Warto zajrzeć: http://www.uni.torun.pl/~mgw/Docs/stunnel/tworzenie_certyfikatow.html
Co prawda ta strona jest raczej o Apache ale warto można się czegoś dowiedzieć.

Mateusz Drach


 


Do góry Do góry 
 
Powrót Powrót 
Wyślij znajomemu