# E-mail sistêmico

Manuais relacionados à utilização e configuração de endereço de e-mail utilizados em aplicações.

# Recuperação/alteração senha e-mail sistêmico

<p class="callout info">Tutorial para recuperação ou alteração da senha de e-mails utilizados em aplicações</p>

1\. Após conectar à VPN acesse o link [https://ssp.ifsp.edu.br/](https://ssp.ifsp.edu.br/)

<p class="callout warning">Importante: utilize a VPN do IFSP. A VPN interna do campus não irá permitir acesso ao endereço.</p>

2\. Caso saiba a senha, preencha os campos conforme informado e clique em `Redefinir`:

[![prints1.PNG](https://manuais.ifsp.edu.br/uploads/images/gallery/2023-11/scaled-1680-/prints1.PNG)](https://manuais.ifsp.edu.br/uploads/images/gallery/2023-11/prints1.PNG)

3\. Se não possuir a senha anterior clique em Redefina sua senha através do e-mail. Em seguida preencha os campos:

[![prints2.PNG](https://manuais.ifsp.edu.br/uploads/images/gallery/2023-11/scaled-1680-/prints2.PNG)](https://manuais.ifsp.edu.br/uploads/images/gallery/2023-11/prints2.PNG)

<p class="callout info">O nome de usuário é o prontuário cadastrado para o e-mail sistêmico. Ex.: RT000236</p>

<p class="callout info">O e-mail é o endereço institucional cadastrado para receber o link de alteração da senha.</p>

<p class="callout warning">Se necessário entre em contato com o suporte da reitoria para informar um novo endereço de e-mail para receber a notificação de recuperação.</p>

<p class="callout danger">Lembrando que o endereço não será criado/sincronizado com a Google até que esse procedimento de alteração seja executado pelo solicitante.</p>

# 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)](https://www.cloudflare.com/learning/email-security/what-is-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.

<p class="callout warning">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.</p>

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.

> ```bash
> 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:

<p class="callout warning">Pode ser necessário instalar o pacote dnspyhton.  
Ex.: python -m pip install dnspython  
</p>

```python
#!/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)

```

##### Referência

<div class="cm-scroller" id="bkmrk-cloudflare%C2%A0" tabindex="-1">- [Cloudflare ](https://www.cloudflare.com/pt-br/learning/email-security/smtp-port-25-587/)

</div>