Para iniciantes, o sendmail tem uma curva de aprendizado bastante íngreme, o MTA recomendado é o postfix.
Para determinar o que o sendmail atualmente suporta; telnet para a porta smtp e emitir o comando help, o sendmail exibirá seus recursos:
] $ telnet localhost 25
220 example.com ESMTP Sendmail 8; Mon, 4 Nov 2013 17:27:20 +0100
ajuda
214-2.0.0 This is sendmail
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
AUTH significa que este servidor sendmail suporta autenticação SMTP.
STARTTLS significa que SSL / startTLS é suportado.
Para habilitar ambos, você precisará modificar sua configuração do sendmail. O arquivo de configuração do sendmail é, bem, digamos claro como lama. A maneira mais fácil é editar o sendmail.mc um arquivo de macro que pode ser usado para gerar uma configuração funcional do sendmail.cf. As linhas que começam com #
são comentários, assim como as linhas que começam com dnl
.
As três linhas seguintes não ativadas habilitarão a autenticação SMTP:
# /etc/mail/sendmail.mc
<snip>
define('confAUTH_OPTIONS', 'A p')dnl
TRUST_AUTH_MECH('EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
<snip>
Para ativar o TLS / SSL, descomente as seguintes linhas e certifique-se de que os certificados (auto-assinados ou públicos) estejam presentes.
define('confCACERT_PATH', '/etc/mail/certs')dnl
define('confCACERT', '/etc/mail/certs/CAcert.pem')dnl
define('confSERVER_CERT', '/etc/mail/certs/MYcert.pem')dnl
define('confSERVER_KEY', '/etc/mail/certs/MYkey.pem')dnl
A maioria dos clientes usará starttls através da porta smtp 25, mas você pode ter um SSL somente smtp sendmail escutando na porta 465 removendo o comentário:
DAEMON_OPTIONS('Port=smtps, Name=TLSMTA, M=s')dnl
verifique se os pacotes rpm do sendmail-cf e do cyrus-sasl estão instalados:
]# yum -y install cyrus-sasl sendmail-cf
Gere o novo sendmail.cf do seu sendmail.mc modificado e reinicie o sendmail
]# cd /etc/mail ; ./make
]# service sendmail restart
Configure o servidor de autenticação sasl com seu método de autenticação preferido para usuários de e-mail e verifique se ele estará em execução. (o padrão é definido para pam em / etc / sysconfig / saslauthd)
]# chkconfig saslauthd on
]# service saslauthd start
Agora, para testar o SMTPAUTH, usaremos o método PLAIN. Verificaremos se o teste de telnet anterior agora mostra suporte para o método AUTH.
Se isso acontecer, tentaremos a autenticação simples. Isso requer uma string codificada na base64 contendo um nome de usuário + senha separado do NULL:
]$ perl -MMIME::Base64 -e 'print encode_base64(" ]$ openssl s_client -starttls smtp -connect example.com:25
. <snip more SSL stuff>
. ---
. SSL handshake has read 17078 bytes and written 357 bytes
. ---
. New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
.
EHLO example2.com
.
. 250-mail.example.com Hello example2.com [1x.2x.3x.4x], pleased to meet you
. 250-ENHANCEDSTATUSCODES
. 250-PIPELINING
. 250-8BITMIME
. 250-SIZE
. 250-DSN
. 250-ETRN
. 250-AUTH LOGIN PLAIN
. 250-DELIVERBY
. 250 HELP
.
AUTH PLAIN AFVTRVJOQU1FAFBBU1NXT1JE
0USERNAME 220 example.com ESMTP Sendmail 8; Mon, 4 Nov 2013 17:27:20 +0100
0PASSWORD");'
AFVTRVJOQU1FAFBBU1NXT1JE
Agora podemos capturar dois pássaros com uma cajadada, verificar a configuração de SSL e a autenticação PLAIN (PLAIN e LOGIN só são permitidos em conexões SSL criptografadas):
214-2.0.0 This is sendmail
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
Agora, os clientes que usam autenticação SMTP válida podem usar seu servidor sendmail para enviar e-mail.