%20com%20v%C3%A1rios%20aplicativos%20da%20web%20-%20%C3%A9%20poss%C3%ADvel%20enviar%20e-mails%20de%20v%C3%A1rios%20dom%C3%ADnios%20via%20sendmail%3F.png)
Eu tenho uma instância Linode na qual hospedarei vários aplicativos LEMP pequenos. Cada um desses aplicativos precisa enviar e-mails aos usuários (principalmente para registro de conta... fóruns/comentários e outros enfeites). Eu gostaria de poder usar o sendmail para fazer isso, pois ele já está instalado no sistema. Isso é possível? Não estou esperando muito uso de tráfego/e-mail, então estou usando o servidor SMTP do Google:
A idéia é que o sendmail seja um cliente nulo - ele pode enviar mensagens (e eu já recebo notificações do sistema (OSSEC, Fail2ban) dele), mas não receber mensagens recebidas. Qualquer formulário/mecanismo de contato de aplicativo envia uma mensagem ao proprietário do próprio aplicativo, por meio da qual ele pode se comunicar diretamente com ele por meio de seu próprio e-mail. Tenho algumas perguntas, no entanto:
- É possível configurar coisas para que cada aplicativo tenha seu próprio endereço/identidade de e-mail de saída? Separei cada aplicativo em seu próprio usuário Linux sem acesso sudo. Então (nomes fictícios), Bob's Widget Emporium é seu próprio usuário separado, assim como Sally's Awesome Political Views. Cada aplicação tem o(s) seu(s) próprio(s) registo(s) de domínio através do gestor DNS na nuvem da Linode devido ao alojamento virtual.
- O que preciso fazer para que esses e-mails não sejam considerados spam? E essa configuração seria feita em nível de caixa centralizada ou por conta?
- O que preciso fazer para bloquear e-mails recebidos de fontes externas? Meus iptables são os seguintes -
ipv4:
$ sudo iptables -vL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
8887 909K f2b-ssh tcp -- any any anywhere anywhere multiport dports ssh
1282 128K ACCEPT all -- lo any anywhere anywhere
0 0 REJECT all -- !lo any 127.0.0.0/8 anywhere reject-with icmp-port-unreachable
162 5770 ACCEPT icmp -- any any anywhere anywhere state NEW icmp echo-request
668 38256 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh state NEW
355 19004 ACCEPT tcp -- any any anywhere anywhere tcp dpt:http state NEW
424 22736 ACCEPT tcp -- any any anywhere anywhere tcp dpt:https state NEW
48568 4098K ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
6996 368K LOG all -- any any anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables_INPUT_denied: "
7413 388K REJECT all -- any any anywhere anywhere reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 LOG all -- any any anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables_FORWARD_denied: "
0 0 REJECT all -- any any anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain f2b-ssh (1 references)
pkts bytes target prot opt in out source destination
8531 881K RETURN all -- any any anywhere anywhere
ipv6:
sudo ip6tables -vL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all lo any anywhere anywhere
0 0 REJECT all !lo any localhost anywhere reject-with icmp6-port-unreachable
67580 6991K ACCEPT ipv6-icmp any any anywhere anywhere
31 2480 ACCEPT tcp any any anywhere anywhere tcp dpt:http state NEW
33 2640 ACCEPT tcp any any anywhere anywhere tcp dpt:https state NEW
10922 50M ACCEPT all any any anywhere anywhere state RELATED,ESTABLISHED
4 2956 LOG all any any anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "ip6tables_INPUT_denied: "
4 2956 REJECT all any any anywhere anywhere reject-with icmp6-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 LOG all any any anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "ip6tables_FORWARD_denied: "
0 0 REJECT all any any anywhere anywhere reject-with icmp6-port-unreachable
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Dado que minha instância pode enviar e-mails, acho que atualmente ela também pode recebê-los.
Então, é possível fazer tudo isso apenas com o sendmail e, em caso afirmativo, como eu configuraria as coisas? Ou, se esta for uma pergunta muito ampla, por favor me avise e eu dividirei.
Responder1
- Sim. Alguns aplicativos suportam a especificação do endereço “de”. Caso contrário, você pode usar o recurso genericstable do sendmail, que
fará com que endereços não qualificados (ou seja, sem domínio) e endereços com domínio listado na classe {G} sejam consultados em um mapa e transformados em outra forma (“genérica”), que pode alterar tanto o nome do domínio quanto o usuário nome.
Exemplo:
FEATURE(masquerade_envelope)
FEATURE(genericstable, `hash -o /etc/mail/genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
Em /etc/mail/genericstable
bob [email protected]
sally [email protected]
Você precisa ter DNS direto e reverso da correspondência do servidor de e-mail. Você precisa configurar o SPF para os domínios que usará. Se o IP aparecer emhttp://www.anti-abuse.org/multi-rbl-check/você precisa obter um IP diferente. (Considere usar um serviço de e-mail gerenciado. Executar um servidor de e-mail é irritante porque os spammers estragam tudo. No entanto, como você está usando o sendmail, você deve gostar de sofrer.)
sendmail por padrão escuta apenas no localhost então você não precisa fazer nada. Se você configurou para escutar em todas as interfaces, desfaça isso.