você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

Autenticação no Sendmail

Colaboração: Peder Munksgaard

Data de Publicação: 14 de Julho de 2003

Durante muito tempo, procurei por tutorias, manuais e ate mesmo listas de discussoes onde falassem sobre Authenticacao no Sendmail.

Apos longas semanas tentando fazer com que e meu bom e velho Sendmail (heheheh Pelo menos eu acho muito bom!), consegui um excelente resultado. (Neste caso, nao abordarei a questao da seguranca utilizando Criptografia para autenticacao segura, estaremos lidando com o RUIM e VELHO "Plain Text").

Vamos aos passos iniciais:

1) Baixe os programas Sendmail e Cyrus-sasl: (hoje as versoes mais atuais e utilizadas neste tutorial estao descritas abaixo)

sendmail.8.12.9.tar.gz 
cyrus-sasl-1.5.28.tar.gz 

2) Descomprima os mesmos em um diretorio preferencialmente em comum para que voce nao se perca:

$ tar -zxvf cyrus-sasl-1.5.28.tar.gz 
$ tar -zxvf sendmail.8.12.9.tar.gz 

3) Vamos a instalacao do cyrus-sasl:

$ cd cyrus-sasl-1.5.28 
$ ./configure --enable-login 
$ make 
$ make install 

(a linha abaixo é necessaria para leitura de bibliotecas do sasl pelo sendmail) ln -s /usr/local/lib/*sasl* /usr/lib/

Agora vamos a configuracao:

$ cd /usr/lib/sasl 
$ vi Sendmail.conf (isso mesmo, S com letra maiuscula) 

Agora insira no Arquivo Sendmail.conf a seguinte linha: pwcheck_method: shadow Nao se esqueca que a distancia entre o ":" e a palavra shadow é um TAB.

Estamos com o Cyrus-SASL OK, devidamente instalado e configurado. Seguimos para o Sendmail! =)

Volte ao diretorio onde vc descomprimiu o seu source do sendmail e faca os seguintes passos:

$ cd sendmail-8.12.9 
$ cd devtools/Site 
$ vi site.config.m4 

Dentro do arquivo site.config.m4 insira as seguintes linhas:

define(``confSTDIO_TYPE',``portable') 
APPENDDEF(``confENVDEF',``-DSASL') 
APPENDDEF(``conf_sendmail_LIBS',``-lsasl') 
APPENDDEF(``confLIBDIRS',``-L/usr/lib/sasl') 
APPENDDEF(``confINCDIRS',``-I/usr/local/include') 

Beleza, agora que voce ja criou o site.config.m4 vamos aos confs do Sendmail: Supondo que voce ainda esteje dentro do diretorio sendmail-8.12.9/devtools/Site, digite:

$ cd ../../cf/cf 
$ vi sendmail.mc 

Agora, colarei um exemplo inteiro do sendmail.mc incluindo utilizacao do SpamCop:

divert(-1) 
# 
# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers. 
# All rights reserved. 
# Copyright (c) 1983 Eric P. Allman. All rights reserved. 
# Copyright (c) 1988, 1993 
# The Regents of the University of California. All rights reserved. 
# 
# By using this file, you agree to the terms and conditions set 
# forth in the LICENSE file which can be found at the top level of 
# the sendmail distribution. 
# 
# 

# 
# This is a generic configuration file for Linux. 
# It has support for local and SMTP mail only. If you want to 
# customize it, copy it to a name appropriate for your environment 
# and do the modifications there. 
# 

divert(0)dnl 
VERSIONID(`$Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $') 
OSTYPE(linux)dnl 
DOMAIN(generic)dnl 
define(``confAUTH_MECHANISMS',``LOGIN DIGEST-MD5 CRAM-MD5 PLAIN') 
TRUST_AUTH_MECH(`LOGIN DIGEST-MD5 CRAM-MD5 PLAIN') 
FEATURE(`virtusertable')dnl 
FEATURE(`access_db')dnl 
FEATURE(`redirect')dnl 
FEATURE(``dnsbl',``bl.spamcop.net', `"Spam blocked see: http://spamcop.net/bl.shtml?"$&{client_addr}')dnl 
FEATURE(`accept_unresolvable_domains')dnl 
MAILER(local)dnl 
MAILER(smtp)dnl 
define(``confALIAS_WAIT',``0')dnl 

Otimo, salvamos o arquivo sendmail.mc, agora digite ainda dentro do diretorio cf:

$ sh Build install-cf 
$ cd ../.. 
$ sh Build all 
$ sh Build install 

Agora é só restartar o seu sendmail:

$ /etc/rc.d/rc.sendmail restart 

Pronto, voce acaba de configurar o seu sendmail para utilizar Authenticacao por senha.

Gostaria de lembrar, que todos os passos acima, foram executados em um Slackware (preferencialmente da versao 8.1 para cima, pois a distribuicao do sendmail que ja vem com o mesmo e a familia 8.12.x, sendo assim, voce nao precisa se preocupar com a criacao de usuarios e setar permissoes para rodar o sendmail pois tudo isso jah vem pronto.)

Para testar seu sendmail com autenticacao, basta executar os seguintes comandos:

$ telnet localhost 25

Apos o retorno padrão do sendmail digite EHLO localhost como mostrado abaixo:

Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
220 server03.cruiser.com.br ESMTP Sendmail 8.12.9/8.12.9; Thu, 22 May 2003 10:29:16 -0300 
EHLO localhost 

E voce tera o seguinte retorno do sendmail:

250-server03.cruiser.com.br Hello localhost [127.0.0.1], pleased to meet you 
250-ENHANCEDSTATUSCODES 
250-PIPELINING 
250-EXPN 
250-VERB 
250-8BITMIME 
250-SIZE 
250-DSN 
250-ETRN 
250-AUTH LOGIN PLAIN 
250-DELIVERBY 
250 HELP 

Pronto, caso apareca a opcao "AUTH LOGIN PLAIN" significa que esta tudo certo, e agora basta utilizar qualquer cliente de e-mail com suporte a autenticacao de senha no smtp que voce conseguirá enviar e-mails de qualquer lugar do mundo!

Qualquer duvida, entre em contato comigo pelo E-mail: <peder (a) pm eti br>

Abraços a todos,

Att.,

Peder Munksgaard



Veja a relação completa dos artigos de Peder Munksgaard