[이석준]님이 남기신 글:
>먼저 웹서버에서 mail.aaa.co.kr로 보내봤는데 잘
안됩니다.
>웹서버의 resolv.conf가 서버회사에서 세팅해준 네임서버로
되어있는 것을
>제 네임서버(211.111.111.111)로
수정했구요 다른 부분도 말씀하신 대로 추가적인 수정을
했습니다.
>현재 웹서버에서 다른곳으로는 잘보내지고 메일서버도 다른
메일은 잘 받고 있는데 아직도 웹서버에서 보내는 메일은
메일서버가 못 받습니다. 두 서버의 메일로그에 서로 상대방의
아이피가 나오기는 나오는데요, 이제 웹서버가 메일서버의
아이피를 찾기는 찾고 메일서버에도 수신자 설정이 되어 다른
곳에서 오는 메일도 잘 받는데 유독 웹서버에서 보내는 것만
아직 받질 못합니다.
>
아래 로그를 봐서는 아직까지도 mail.aaa.co.kr 호스트에 대한
리졸빙과
전형적인 수신자 설정 문제입니다.
[클라이언트 리졸빙에 대한 디버깅]
1. 웹서버에서 다음의 결과를 다시 포스팅하세요.
$ telnet mail.aaa.co.kr 25
(이곳 첫줄의 내용을 그대로 캐춰, IP 주소를 알아보기 위함)....
...
2. 웹서버 PHP 에서
<?php
print_r(gethostbynamel('mail.aaa.co.kr'));
?>
의 결과를 포스팅해 주세요.
>아래는 웹서버의 maillog 구요,
>---------------------------------------------------------------------
>Sep 19 08:48:01 localhost sendmail[1518]: h8J0C1p01518: from=nobody, size=213,
class=0, nrcpts=1, msgid=<200309190012.h8J0C1p01518@localhost.localdomain>,
relay=nobody@localhost
>
>Sep 19 08:48:01 localhost sendmail[1184]: h8INdSD01181: SYSERR(nobody):
mail.aaa.co.kr. config error: mail loops back to me (MX problem?)
>
>Sep 19 08:48:01 localhost sendmail[1184]: h8INdSD01181: to=ㅇㅇ<admin@mail.aaa.co.kr>, ctladdr=nobody
(99/99), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=30208,
relay=mail.aaa.co.kr. [211.111.111.112], dsn=5.3.5, stat=Local configuration
error
>
>Sep 19 08:48:01 localhost sendmail[1184]: h8INdSD01181: h8INdSC01184: DSN: Local
configuration error
>
>Sep 19 08:48:01 localhost sendmail[1184]: h8INdSC01184: to=root, delay=00:00:00,
xdelay=00:00:00, mailer=local, pri=30308, dsn=2.0.0, stat=Sent
>---------------------------------------------------------------------
위의 메일로그는 mail.aaa.co.kr 호스트에서 mail.aaa.co.kr 을
수신자로
설정되어 있지 않게 때문에 에러난 경우입니다.
현재 정확하게 mail.aaa.co.kr 호스트가 211.111.111.112(메일서버)로
리졸빙되는지 알수 없습니다.
이것은 직접 디버깅해봐야 합니다.
(앞의 두가지 디버깅 테스트를 말함)
3. 한가지 더 테스트
현재 웹서버의 /etc/mail/local-host-names 파일에
aaa.co.kr
mail.aaa.co.kr
을 추가하고 mail() 함수로 user@aaa.co.kr user@mail.aaa.co.kr
에 대한 결과(성공여부)와
웹서버의 메일로그를 다시 포스팅해 주세요.
>
>아래는 동시에 메일서버에서 나타나는 메시지
입니다.
>---------------------------------------------------------------------
>Sep 19 08:42:59 localhost sendmail[25283]: NOQUEUE: [211.111.111.113] did not issue
MAIL/EXPN/VRFY/ETRN during connection to MTA
>---------------------------------------------------------------------
>
이건 정상적인 로그이므로 무시해도 됩니다.
>
>[산이]님이 남기신 글:
>
>>
>>[이석준]님이 남기신 글:
>>
>>>말씀하신대로
네임서버의 zone파일 부분의 A 값을 웹서버로 변경하였구요,
메일서버의 local-host-names에 수신자설정을 하고 웹서버의
hosts파일을 수정한 후 host.conf와 nsswitch.conf를 수정해
주었습니다. 현재상태에서 웹서버에서 mail()함수로 다음이나
하나포스같은 제3의 메일로 보내면 잘 가구요, 또 다음같은
곳에서 제 메일서버의 계정으로 메일을 보내도 잘 받아집니다.
문제는 웹서버에서 웹메일로 메일서버의 계정으로 발송하면
똑같은 config error가 뜨면서 발송이 안됩니다. 그리고 php.ini에서
설정하는 smtp부분에 #win32 only라고 되어있던데 이부분에 원격
ip를 설정해줘야 하는지요?
>>
>>
>>mail() 함수에서 user@aaa.co.kr 로
하지 말고 user@mail.aaa.co.kr
>>과 같이 mail 호스트 이름을 주고 테스트해 보세요.
>>그러면 아마 메일서버로 잘 갈겁니다.
>>
>>현재 웹서버의 리졸빙 문제인것 같네요.
>>
>>즉 웹서버는 클라이언트 입장이 되어 리졸빙을
시도하는데
>>aaa.co.kr 에 대해서 먼저 www 호스트의 /etc/hosts 파일을
뒤지기
>>때문에
>>
>>aaa.co.kr == 211.111.111.113 == www.aaa.co.kr
>>
>>이런 결과가 됩니다.
>>
>>따라서 www 서버의 /etc/hosts 파일에서
>>
>>211.111.111.113 aaa.co.kr aaa.co.kr
>>
>>이부분을 지우든지 아니면
>>
>>211.111.111.112 aaa.co.kr aaa.co.kr
>>
>>이렇게 해도 됩니다.
>>www 서버의 /etc/hosts 내용은 오직 www 서버가 클라이언트
입장에서만
>>사용되기 때문에 이렇게 서로 어긋나는 경우도
가능합니다.
>>
>>그러나 이부분은 나중에 문제의 수지가 될 가능이
있기때문에
>>역시 지우는것이 좋겠군요.
>>
>>아예 헷갈리면 www 의 /etc/hosts 내용은 localhost 만 놓고
>>모두 지우는것이 좋겠네요..
>>
>>그리고,
>>
>>www IN A 211.111.111.113
>>
>>이부분을
>>
>>www IN A 211.111.111.113
>> IN MX 0 mail.aaa.co.kr.
>>
>>이렇게 MX 레코드를 추가해 주는 것이 좋겠네요.
>>
>>그리고 반드시 www 서버의 /etc/resolv.conf 파일에서
네임서버
>>지정은 211.111.111.111 이렇게 지정해줘야 합니다.
>>현재 이렇게 설정되어 있죠?
>>
>>여기까지 해보고
>>또 문제가 생기면 www 서버의 리졸빙 문제 즉 메일
경로에
>>대한 문제입니다.
>>
>>
>>/etc/mail/mailertable
>>
>>파일에
>>
>>-------------------------------------
>>.aaa.co.kr smtp:mail.aaa.co.kr
>>.bbb.co.kr smtp:mail.aaa.co.kr
>>...
>>-------------------------------------
>>
>>왼쪽의 aaa.co.kr bbb.co.kr 와 같은 도메인을 그
메일주소로
>>사용하고, www 서버로 메일이 도착하면 www 서버의 sendmail
은
>>오른쪽의 stmp: 의 서버로 모두 가라는 의미입니다.
>>
>>왼쪽의 도메인들은 웹서버의(아파치)
가상호스트에 설정된
>>모든 도메인들을 의미하므로 모두 적어줘야합니다.
>>
>>(kr smtp 사이는 탭으로 공간을 띠움)
>>
>>
>>이렇게 설정하고
>>
>># makemap hash /etc/mailertable < /etc/mailertable
>>
>>이렇게 DBM 파일을 만들어 주면 됩니다.
>>
>>....
>>
>>이렇게 mailertable 까지 설정해주지 않아도 잘 분리가
되는데
>>좀 이상하군요..(아무래도
리졸빙문인것 같네요)
>>
>>만약 도메인 레벨이 아닌 user 레벌에서 포워딩하고자
한다면
>>/etc/aliases 나 /etc/mail/virtusertable 을 이용하면 됩니다.
>>
>>여기까지 해보고 다시 포스팅하세요.
>>
>>특히 제일처음에 언급한 mail() 함수로 user@mail.aaa.co.kr
>>로 테스트해 보고 그래도 이상있다면 mail 서버와 www
서버의
>>maillog 를 포스팅하세요(해당부분만)
>>
>>
>>
>>
>>
>>
>>
>>>
>>>[산이]님이 남기신 글:
>>>
>>>>
>>>>[이석준]님이
남기신 글:
>>>>
>>>>>-----------------------------------------
>>>>>답변자가 기본적으로 참고할 내용입니다.
>>>>>- 배포판(옵션) : redhat 7.*
>>>>>- 커널버전(옵션)
: 2.4.20
>>>>>- 데몬버전(예:apache
1.3.27) :
>>>>>- 데몬설치유형(RPM/컴파일/기타)
:
>>>>>-----------------------------------------
>>>>>안녕하세요?
메일설정이 항상 어렵네요.
>>>>>함께 운영하던 서버를 제목처럼 네임서버, 웹서버,
메일서버로 분리했습니다. 먼저 네임서버(211.111.111.111)의
zone파일을 아래와 같이 설정하였습니다.
>>>>>
>>>>> IN NS ns1.aaa.co.kr.
>>>>> IN NS ns2.aaa.co.kr.
>>>>> IN A 211.111.111.111
>>>>> IN HINFO "x86 pentium4" "redhat
linux"
>>>>> IN MX 0 mail.aaa.co.kr.
>>>>>ns1 IN A 211.111.111.111
>>>>>ns2 IN A 211.111.111.112
>>>>>mail IN A 211.111.111.112
>>>>>www IN A 211.111.111.113
>>>>>
>>>>>그리고 /etc/hosts에 전부 등록하였구요, resolv.conf도
설정하였습니다.
>>>>>메일서버나
웹서버의 hosts파일에는 locahost만 설정되어 있구요, resolv.conf는
네임서버와 똑같이 설정되어 있습니다.
>>>>>
>>>>>그리고 웹서비스와 pop3서비스를 위해 웹서버와 메일서버에
동시에 같은 계정을 생성하고 네임서버의 local-host-names에
수신자를 아래처럼 설정했습니다.
>>>>>
>>>>>mail.usera.co.kr
>>>>>usera.co.kr
>>>>>www.usera.co.kr
>>>>>mail.userb.co.kr
>>>>>userb.co.kr
>>>>>www.userb.co.kr
>>>>>...
>>>>>
>>>>>그런다음 웹메일을 메일서버를 통해 발송하기위해
메일서버의 access에 localhost와 웹서버의 ip(211.111.111.113)를
relay로 설정했습니다. 그런후 /makemap hash /etc/mail/access <
/etc/mail/access 했습니다.
>>>>>
>>>>>현재상태에서
웹은 잘 되구요, 외부에서 오는 메일도 메일서버에서 잘
받습니다.
>>>>>
>>>>>그런데 두가지가 문제인데요,
>>>>>
>>>>>첫째는 웹서버에서 메일을 발송하면 (php mail() 또는
커멘드라인에서
mail ~ 할때) 메일서버로 릴레이가 되서 발송되지 않고 웹서버에
현재 설치된 센드메일이 발송합니다. pstree 해보면 센드메일이
떠있지는 않는데 maillog를 보면 분명 웹서버의 센드메일이
발송했습니다. 현재 설정으로 그럴 수 밖에 없을것 같기도
한데요, 원격 smtp서버를 이용하려면 어떻게 해야
하는지요?
>>>>>
>>>>
>>>>1) 커맨드라인 mail :
>>>>
>>>>기본적으로 localhost 의 /usr/lib/sendmail 을 이용합니다.
>>>>맨페이지를 보았는데 원격의 SMTP 설정에 관한 내용은
없더군요.
>>>>(/etc/mail.rc)
>>>>어쩔 수 없이 localhost 의 sendmail 을 이용하는 수
밖에..
>>>>
>>>>
>>>>2) PHP mail() 함수
>>>>
>>>>php.ini 파일에서 SMTP 설정을 원격의 메일서버로
지정해보세요.
>>>>
>>>>
>>>>
>>>>>둘째는 현재상태(웹서버의
센드메일이 발송)에서라도 메일은 가야하는데 외부로는
가는데요 메일서버의 계정으로는 도착하질않습니다.
아래와 같은 에러가 뜹니다.
>>>>>
>>>>>먼저 웹서버에 뜨는 에러입니다.
>>>>>--------------------------------------------------------------------
>>>>>localhost sendmail[1092]: h892cVs01089: SYSERR(nobody): mail.aaa.co.kr. config
error: mail loops back to me (MX problem?)
>>>>>
>>>>>localhost sendmail[1092]: h892cVs01089: to=usera<admin@usera.co.kr>, ctladdr=nobody (99/99),
delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=30212, relay=mail.aaa.co.kr.
>>>>>
>>>>>[211.111.111.112], dsn=5.3.5, stat=Local configuration error
>>>>>localhost sendmail[1092]: h892cVs01089: h892cVr01092: DSN: Local configuration
error
>>>>>--------------------------------------------------------------------
>>>>>
>>>>
>>>>mail 서버의 sendmail 에서 mail.aaa.co.kr 수신자가 없어서
>>>>이와 같이 무한 루프가 돕니다.
>>>>
>>>>메일서버의 수신자 설정은 반드시 aaa.co.kr
mail.aaa.co.kr
>>>>www.aaa.co.kr 등을 설정해야 합니다.
>>>>
>>>>앞에서
>>>>
>>>>mail.usera.co.kr
>>>>usera.co.kr
>>>>www.usera.co.kr
>>>>mail.userb.co.kr
>>>>userb.co.kr
>>>>www.userb.co.kr
>>>>
>>>>이 수신자 설정을 mail 서버인 211.111.111.112 에서 설정해줘야
합니다.
>>>>(ns1 인 211.111.111.111 에서 수신자 설정을 하면
안됩니다.)
>>>>
>>>>그리고 현재
>>>>각각 서버의 /etc/hosts 와 네임서버의 zone 이 서로 뒤섞인듯
하네요.
>>>>
>>>>
>>>>@ IN A 211.111.111.111
>>>>
>>>>이 부분은
>>>>
>>>>@ IN A 211.111.111.113
>>>>
>>>>이렇게 웹서버쪽으로 @ 를 설정하세요.
>>>>나머지 zone 레코드를 그대로 두고,
>>>>
>>>>-- /etc/mail/local-host-names ------------
>>>>## mail 서버인 211.111.111.112 에서 다음을 설정
>>>>##
>>>>mail.usera.co.kr
>>>>usera.co.kr
>>>>www.usera.co.kr
>>>>mail.userb.co.kr
>>>>userb.co.kr
>>>>www.userb.co.kr
>>>>...
>>>>-----------------------------------------------
>>>>
>>>>www 서버의 /etc/mail/local-host-names 에는 localhost 만
>>>>설정합니다.
>>>>
>>>>www 서버의 /etc/hosts 파일에는
>>>>localhost 하나만 있어도 되지만 네임서버를 거치지
않고
>>>>리졸빙하려면
>>>>
>>>>-- www 서버의 /etc/hosts -------------------
>>>>127.0.0.1 localhost.localdomain localhost
>>>>211.111.111.113 aaa.co.kr aaa.co.kr
>>>>211.111.111.113 www.aaa.co.kr www
>>>>211.111.111.112 mail.aaa.co.kr mail
>>>>...
>>>>----------------------------------------------
>>>>
>>>>이정도만 설정하면 될것 같네요.
>>>>가능한 211.111.111.112 mail.aaa.co.kr 이 설정은 해주는
것이
>>>>좋습니다.
>>>>
>>>>--- www 서버의 /etc/host.conf ---------------------
>>>>order hosts,bind
>>>>...
>>>>----------------------------------------------------
>>>>
>>>>이렇게 hosts 가 bind 보다 앞에 있는지 확인
>>>>bind 보다 뒤에 있으면 bind 앞쪽에 설정.
>>>>
>>>>또한
>>>>
>>>>--- www 서버의 /etc/nsswitch.conf --------------
>>>>...
>>>>hosts: files nisplus nis dns
>>>>...
>>>>-------------------------------------------------
>>>>
>>>>이렇게 files 이 제일 앞부분으로 오도록 설정되어
>>>>있는지 확인하세요.
>>>>
>>>>참고로,
>>>>
>>>>mail.aaa.co.kr. config error: mail loops back to me (MX problem?)
>>>>
>>>>이와 같은 에러메시지는
>>>>
>>>>mail.aaa.co.kr 메일서버에서 aaa.co.kr 도메인에 대한
>>>>수신자 설정이 없기 때문에 계속 무한루프가 도는
경우입니다.
>>>>
>>>>좀더 자세한 내용은
>>>>
>>>>http://linuxchannel.net/docs/mx-problem.txt
>>>>
>>>>위의 문서를 나중에(?) 읽어보시길 바랍니다.
>>>>
>>>>
>>>>>아래는 메일서버에 뜨는 에러입니다.
>>>>>--------------------------------------------------------------------
>>>>>localhost sendmail[10461]: NOQUEUE: [211.43.207.139] did not issue
MAIL/EXPN/VRFY/ETRN during connection to MTA
>>>>>--------------------------------------------------------------------
>>>>>
>>>>
>>>>이 부분은 무시해도 됩니다.
>>>>
>>>>
>>>>>검색해보니까
비슷한 질문들이 있었던것 같기도 한데요, 잘 이해가 안되서
질문드립니다. 항상 많이 가르쳐주셔서 감사하구요, 즐거운
추석 보내세요~
>>>>
>>>>========================================
>>>
>>>========================================
>>
>>========================================
>
>========================================
========================================
|