이메일 반송 처리를 테스트하고 있습니다. 불량 도메인에 테스트 이메일을 보내는 경우, 예를 들면 다음과 같습니다.[이메일 보호됨], 로그에 다음 오류가 표시됩니다.
SYSERR(루트): blahblahfail.org.mydomain.org. 구성 오류: 메일이 나에게 반복됩니다(MX 문제?)
대상 도메인의 DNS가 실패하면 sendmail이 내 도메인을 잘못된 도메인에 추가하는 것 같습니다.
왜 이런 일이 발생합니까? 도메인이 불량하면 이메일이 반송될 것으로 예상해야 합니까? 알 수 없는 user@gooddomain 유형의 반송 이메일이 저에게 효과적입니다.
가능한 관련 sendmail 구성 라인:
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
참고: Always_add_domain 기능을 제거해 보았습니다. 내 도메인 이름이 /etc/mail/local_host/names에 나열되어 있습니다.
답변1
이것은 센드메일 문제가 아닙니다. 이는 내 DNS A 레코드의 와일드카드(*)로 인해 발생합니다.
이유는 모르겠지만 이름이 확인되지 않으면 내 도메인 이름이 이름에 추가되고 와일드카드 때문에 DNS 조회가 내 IP 주소로 확인됩니다.
이는 메일, 컬 및 SSH에 영향을 미칩니다.
badbadfailfail.com으로 SSH를 통해 연결하면 내 IP로 다시 SSH로 연결됩니다.
DNS 레코드에서 와일드카드를 제거하고 있습니다.
이것을 /etc/resolv.conf에 추가해도 작동합니다.
search .
답변2
BSD/SYSTEM 5 시스템에서 20년 동안 이 일을 해왔습니다.
/etc/nsswitch.conf 편집
hosts: files myhostname dns
networks: files
/etc/호스트 이름 편집
#your hostname.domainname
127.0.0.1 ns1.local localhost.local ns1 localhost
그게 다입니다. 여기서 창의력을 발휘하지 마십시오. 또한 localhost에 대한 루프백을 127.0.0.1로 유지하십시오. 그렇지 않으면 "nix"에 따라 여기에서 문제가 발생합니다.
192.168.0.200 ns1.local localhost.local ns1 localhost
sendmail.cf를 편집하세요. 예, 내용은 알지만 제 말이 맞습니다. 계속하세요.
/etc/mail/sendmail.cf
Fw/etc/mail/local-host-names %[^\#]
Cwns1 # your hostname alone
Dj$w.local # your domainname alone
sendmail이 사용될 릴레이나 호스트를 확인하도록 sendmail에 지시하도록 파일을 편집하십시오. cf와 일치하는 한 원하는 대로 이름을 지정하십시오(예: /etc/mail/local-host-names). 이것이 최신 sendmail의 기본값이라고 생각됩니다.
localhost # Depending on your flavour of 'nix, BSD/SYSTEM 5, you NEED
#this or you'll break something trying to fix a "small" problem
ns1.local
localhost.local # Same as above, I compile code all the time that calls
#the loopback or 127.0.0.1
iptables에는 여기에서 다루기에는 너무 많지만 프런트엔드도 있지만 많지는 않습니다. 저도 작성자의 지식을 바탕으로 코드를 작성합니다. 다른 중요한 서비스를 방해하지 않으려면 루프백에 포트 25, 로컬 네트워크, 53 UDP IF DNS 캐시 서버 및 931을 허용하도록 합시다.
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT all -- 192.168.0.0/24 0.0.0.0/0
DROP icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8 ctstate NEW
LOG icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8 ctstate NEW LOG flags 0 level 4
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:123
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:931
DROP udp -- 0.0.0.0/0 0.0.0.0/0
LOG udp -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
DROP tcp -- 0.0.0.0/0 0.0.0.0/0
LOG tcp -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
DROP all -- 0.0.0.0/0 0.0.0.0/0
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
위의 예는 귀하의 구성, 네트워크(광산은 192.168.0.0/24)에 따라 크게 달라집니다. 이는 "대가"가 아니므로 스스로 알아내시기 바랍니다. 내 앞에는 PIX가 있고 네트워크에는 다른 "물건"이 있습니다. localhost.local 또는 루프백을 제거하는 데 따른 책임은 사용자에게 있습니다. 많은 OS 사용자가 이를 필수 서비스로 하드코딩하고 있으며 이를 제거하라고 지시하는 다른 답변을 보았지만 그렇게 하지 마십시오.
# /etc/hosts
192.168.0.200 ns1.local localhost.local localhost
127.0.0.1 ns1.local localhost.local ns1 localhost
좋아, 모두 재부팅하자. 재부팅하지 말고 'nix sysadmins'에서 작동하지 않는 유일한 것은 명령줄에서 수행할 수 없는 커널을 다시 로드할 때까지 uname -a입니다. 원하는 대로 루트 또는 sudo가 됩니다. 새로 온 사람들은 자신의 이익을 위해 sudo를 사용해야 한다고 주장합니다.
service hostname restart
ifdown eth0
/etc/init.d/sendmail stop
iptables -F
iptables -nL # should be clean, no rulez
ifup eth0
iptables-restore "file" # wherever you told iptables to
#iptables-save > "file" to write. Me, well
#iptables-save > /etc/fw/iptables.rulez
iptables-restore /etc/fw/iptables.rulez # Thats me, pay attention
#here or get whacked, firewalls are important and why we use 'nix
service hostname stop
service hostname start
/etc/init.d/sendmail start
hostname # should be hostname alone i.e. ns1
hostname -f # full host.domainname i.e. host.domainname for me it's ns1.local
service hostname status
/etc/init.d/sendmail start # tail -f /var/log/syslog or /var/log/messages
iptables-restore /etc/fw/iptables.rulez
tail -f /var/log/syslog or /var/log/messages # Again, depends on your 'nix
마지막으로, 한두 단계를 놓쳤을 수도 있습니다. 즉시 이 작업을 수행하면 모든 것이 잘 될 것입니다. 매우 똑똑해지기를 원하고 포럼과 사람이나 정보를 잊어버리면 포럼보다 더 빨리 똑똑해질 것입니다. 밤새도록 걸릴 수도 있지만 그 경험은 믿을 수 없을 만큼 귀중합니다.