%20%EC%83%81%EC%9E%90%20-%20sendmail%EC%9D%84%20%ED%86%B5%ED%95%B4%20%EC%97%AC%EB%9F%AC%20%EB%8F%84%EB%A9%94%EC%9D%B8%EC%97%90%EC%84%9C%20%EC%9D%B4%EB%A9%94%EC%9D%BC%EC%9D%84%20%EB%B3%B4%EB%82%BC%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
여러 개의 작은 LEMP 앱을 호스팅할 Linode 인스턴스가 있습니다. 이러한 각 앱은 사용자에게 이메일을 보내야 합니다(주로 계정 등록... 포럼/댓글 등). 나는 시스템에 이미 설치되어 있는 sendmail을 사용하여 이 작업을 수행하고 싶습니다. 그게 가능합니까? 트래픽/이메일 사용량이 많지 않을 것으로 예상되므로 Google의 SMTP 서버를 사용하고 있습니다.
아이디어는 sendmail이 null 클라이언트가 된다는 것입니다. 즉, 메일을 보낼 수 있지만(그리고 이미 시스템 알림(OSSEC, Fail2ban)을 받았음) 들어오는 메일을 받을 수는 없습니다. 모든 앱 문의 양식/메커니즘은 앱 소유자에게 메시지를 보내며, 그러면 소유자는 자신의 이메일을 통해 직접 통신할 수 있습니다. 하지만 몇 가지 질문이 있습니다.
- 각 앱이 자체 발신 이메일 주소/ID를 갖도록 구성할 수 있나요? sudo 액세스 없이 각 앱을 자체 Linux 사용자로 분리했습니다. 따라서 (가상 이름) Bob's Widget Emporium은 Sally's Awesome Political Views와 마찬가지로 별도의 사용자입니다. 각 앱에는 가상 호스팅으로 인해 Linode의 클라우드 DNS 관리자를 통해 자체 도메인 레코드가 있습니다.
- 이러한 이메일을 스팸으로 간주하지 않으려면 어떻게 해야 합니까? 그리고 이 구성은 중앙 집중식 박스 수준에서 수행됩니까, 아니면 계정별로 수행됩니까?
- 외부 소스로부터 들어오는 이메일을 차단하려면 어떻게 해야 합니까? 내 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
- 예. 일부 앱은 "보낸 사람" 주소 지정을 지원합니다. 그렇지 않으면 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]
메일 서버의 정방향 및 역방향 DNS가 일치해야 합니다. 사용할 도메인에 대해 SPF를 설정해야 합니다. IP가 나타나는 경우http://www.anti-abuse.org/multi-rbl-check/다른 IP를 얻어야 합니다. (관리되는 메일 서비스를 사용하는 것을 고려해보세요. 메일 서버를 운영하는 것은 스패머가 모든 것을 망쳐놓기 때문에 귀찮습니다. 그러나 sendmail을 사용하고 있으므로 고통을 좋아할 것입니다.)
기본적으로 sendmail은 localhost에서만 수신 대기하므로 아무 것도 할 필요가 없습니다. 모든 인터페이스를 수신하도록 구성한 경우 이를 실행 취소하세요.