여러 웹 앱이 포함된 Linode(Debian) 상자 - sendmail을 통해 여러 도메인에서 이메일을 보낼 수 있습니까?

여러 웹 앱이 포함된 Linode(Debian) 상자 - sendmail을 통해 여러 도메인에서 이메일을 보낼 수 있습니까?

여러 개의 작은 LEMP 앱을 호스팅할 Linode 인스턴스가 있습니다. 이러한 각 앱은 사용자에게 이메일을 보내야 합니다(주로 계정 등록... 포럼/댓글 등). 나는 시스템에 이미 설치되어 있는 sendmail을 사용하여 이 작업을 수행하고 싶습니다. 그게 가능합니까? 트래픽/이메일 사용량이 많지 않을 것으로 예상되므로 Google의 SMTP 서버를 사용하고 있습니다.

여기에 이미지 설명을 입력하세요

아이디어는 sendmail이 null 클라이언트가 된다는 것입니다. 즉, 메일을 보낼 수 있지만(그리고 이미 시스템 알림(OSSEC, Fail2ban)을 받았음) 들어오는 메일을 받을 수는 없습니다. 모든 앱 문의 양식/메커니즘은 앱 소유자에게 메시지를 보내며, 그러면 소유자는 자신의 이메일을 통해 직접 통신할 수 있습니다. 하지만 몇 가지 질문이 있습니다.

  1. 각 앱이 자체 발신 이메일 주소/ID를 갖도록 구성할 수 있나요? sudo 액세스 없이 각 앱을 자체 Linux 사용자로 분리했습니다. 따라서 (가상 이름) Bob's Widget Emporium은 Sally's Awesome Political Views와 마찬가지로 별도의 사용자입니다. 각 앱에는 가상 호스팅으로 인해 Linode의 클라우드 DNS 관리자를 통해 자체 도메인 레코드가 있습니다.
  2. 이러한 이메일을 스팸으로 간주하지 않으려면 어떻게 해야 합니까? 그리고 이 구성은 중앙 집중식 박스 수준에서 수행됩니까, 아니면 계정별로 수행됩니까?
  3. 외부 소스로부터 들어오는 이메일을 차단하려면 어떻게 해야 합니까? 내 iptables는 다음과 같습니다 -

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

내 인스턴스가 이메일을 보낼 수 있다는 점을 고려하면 현재 이메일도 받을 수 있을 것 같습니다.

그렇다면 sendmail만으로 이 모든 작업을 수행할 수 있습니까? 그렇다면 어떻게 구성해야 합니까? 또는 질문이 너무 광범위한 경우 알려주시면 나누어 드리겠습니다.

답변1

  1. 예. 일부 앱은 "보낸 사람" 주소 지정을 지원합니다. 그렇지 않으면 sendmail의 genericstable 기능을 사용할 수 있습니다.

정규화되지 않은 주소(즉, 도메인이 없는)와 클래스 {G}에 나열된 도메인이 있는 주소가 지도에서 조회되어 도메인 이름과 사용자가 모두 변경될 수 있는 다른("일반") 형식으로 변환됩니다. 이름.

예:

FEATURE(masquerade_envelope)
FEATURE(genericstable, `hash -o /etc/mail/genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain') 

/etc/mail/genericstable에서

bob [email protected]
sally [email protected]
  1. 메일 서버의 정방향 및 역방향 DNS가 일치해야 합니다. 사용할 도메인에 대해 SPF를 설정해야 합니다. IP가 나타나는 경우http://www.anti-abuse.org/multi-rbl-check/다른 IP를 얻어야 합니다. (관리되는 메일 서비스를 사용하는 것을 고려해보세요. 메일 서버를 운영하는 것은 스패머가 모든 것을 망쳐놓기 때문에 귀찮습니다. 그러나 sendmail을 사용하고 있으므로 고통을 좋아할 것입니다.)

  2. 기본적으로 sendmail은 localhost에서만 수신 대기하므로 아무 것도 할 필요가 없습니다. 모든 인터페이스를 수신하도록 구성한 경우 이를 실행 취소하세요.

관련 정보