Configurações SMTP para e-mail de sistemas (não-responda.ifsp.edu.br)
Configurações de E-mail - Envio e recebimento de mensagens
Seguem abaixo as informações necessárias para configuração do e-mail institucional em serviços web (Ex.: GLPI, Moodle, etc).
Originalmente, o Simple Mail Transfer Protocol (SMTP) usava a porta 25. Atualmente, o SMTP deve usar a porta 587. Esta é a porta para transmissões de e-mails criptografados usando SMTP Secure (SMTPS).
Às vezes a porta 465 também é usada para SMTPS. Entretanto, esta é uma implementação ultrapassada e a porta 587 deve ser usada, se possível.
Portanto: dar preferencia a porta 587 com TLS; e usar a porta 465 com SSL em casos que não for possivel usar a 587.
A porta 25 foi bloqueada por default e não é mais utilizada.
HOST: nao-responda.ifsp.edu.br
Autenticação: prontuario@nao-responda.ifsp.edu.br
Segurança: SSL/TLS
Portas: 465 ou 587 (preferivel).
Abaixo as portas geralmente listadas no servidor zimbra.
root@email:~# nmap nao-responda.ifsp.edu.br Starting Nmap 5.21 ( http://nmap.org ) at 2020-10-28 12:30 AMST Nmap scan report for email.ifsp.edu.br (45.236.121.45) Host is up (0.000020s latency). Not shown: 986 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http 110/tcp open pop3 111/tcp open rpcbind 143/tcp open imap 389/tcp open ldap 443/tcp open https 465/tcp open smtps 587/tcp open submission 993/tcp open imaps 995/tcp open pop3s 5222/tcp open unknown 7025/tcp open unknown
Envio de E-mail via script
Casa seja necessário validar o envio de mensagens a apartir de uma determinada VLAN, pode ser usado o script abaixo:
Pode ser necessário instalar o pacote dnspyhton.
Ex.: python -m pip install dnspython
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import socket
import ssl
import smtplib
import dns.resolver
from datetime import datetime
import getpass
import sys
SMTP_SERVER = "nao-responda.ifsp.edu.br"
PORTS = [465, 587]
TIMEOUT = 10
LOG_FILE = "smtp_test.log"
def log(msg):
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
line = f"[{timestamp}] {msg}"
print(line)
with open(LOG_FILE, "a", encoding="utf-8") as f:
f.write(line + "\n")
def test_dns():
log("=== Teste DNS ===")
try:
answers = dns.resolver.resolve(SMTP_SERVER, "A")
for rdata in answers:
log(f"Registro A: {rdata.address}")
except Exception as e:
log(f"Erro DNS A: {e}")
try:
answers = dns.resolver.resolve(SMTP_SERVER, "MX")
for rdata in answers:
log(f"Registro MX: {rdata.exchange} (prio {rdata.preference})")
except Exception as e:
log(f"Erro DNS MX: {e}")
def test_tcp(port):
log(f"=== Teste TCP porta {port} ===")
try:
with socket.create_connection((SMTP_SERVER, port), timeout=TIMEOUT):
log(f"Porta {port} acessível")
except Exception as e:
log(f"Falha na porta {port}: {e}")
def test_banner_smtps():
log("=== Teste Banner SMTPS (porta 465) ===")
try:
context = ssl.create_default_context()
with socket.create_connection((SMTP_SERVER, 465), timeout=TIMEOUT) as sock:
with context.wrap_socket(sock, server_hostname=SMTP_SERVER) as ssock:
banner = ssock.recv(1024).decode(errors="ignore").strip()
log(f"Banner recebido: {banner}")
except Exception as e:
log(f"Erro ao obter banner SMTPS: {e}")
def test_smtp_plain_587():
log("=== Teste SMTP simples (EHLO) porta 587 ===")
try:
server = smtplib.SMTP(SMTP_SERVER, 587, timeout=TIMEOUT)
server.ehlo()
log("EHLO executado com sucesso")
server.quit()
except Exception as e:
log(f"Erro SMTP simples (587): {e}")
def test_starttls():
log("=== Teste SMTP STARTTLS (porta 587) ===")
try:
server = smtplib.SMTP(SMTP_SERVER, 587, timeout=TIMEOUT)
server.ehlo()
server.starttls(context=ssl.create_default_context())
server.ehlo()
log("STARTTLS negociado com sucesso")
server.quit()
except Exception as e:
log(f"Erro STARTTLS: {e}")
def test_smtps():
log("=== Teste SMTPS (porta 465) ===")
try:
context = ssl.create_default_context()
server = smtplib.SMTP_SSL(SMTP_SERVER, 465, timeout=TIMEOUT, context=context)
server.ehlo()
log("Conexão SMTPS estabelecida com sucesso")
server.quit()
except Exception as e:
log(f"Erro SMTPS: {e}")
def interactive_auth_test():
answer = input("\nDeseja realizar o teste de envio SMTP autenticado? (s/N): ").strip().lower()
if answer != "s":
log("Teste de envio autenticado ignorado pelo usuário")
return
log("=== Teste de envio SMTP autenticado (interativo) ===")
smtp_user = input("Usuário SMTP: ").strip()
smtp_pass = getpass.getpass("Senha SMTP (não será exibida): ")
mail_from = input("E-mail remetente: ").strip()
mail_to = input("E-mail destinatário: ").strip()
try:
msg = f"""From: {mail_from}
To: {mail_to}
Subject: Teste SMTP Python (Interativo)
Mensagem de teste enviada via script Python SMTP interativo.
"""
server = smtplib.SMTP(SMTP_SERVER, 587, timeout=TIMEOUT)
server.ehlo()
server.starttls(context=ssl.create_default_context())
server.login(smtp_user, smtp_pass)
server.sendmail(mail_from, [mail_to], msg)
server.quit()
log("Mensagem enviada com sucesso (SMTP autenticado)")
except Exception as e:
log(f"Erro no envio autenticado: {e}")
def main():
log("===== INÍCIO DOS TESTES SMTP =====")
test_dns()
for port in PORTS:
test_tcp(port)
test_banner_smtps()
test_smtp_plain_587()
test_starttls()
test_smtps()
interactive_auth_test()
log("===== FIM DOS TESTES SMTP =====")
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
log("Execução interrompida pelo usuário")
sys.exit(1)
No comments to display
No comments to display