Mail2014. 12. 4. 16:38

 

 

4.0.0, stat=Deferred: Connection refused by

 

/var/log/maillog 에서 위 메세지의 로그가 남을 경우 해당 메일들은 모두 메일큐에 쌓이게 되고,

/etc/sysconfig/sendmail 에 설정된 시간마다 재발송이 됩니다.


이때 센드메일 설정으로 해결할 수 있습니다.

1. vi /etc/mail/sendmail.cf 파일을 열어서
   #Dj$w.Foo.COM 부분을 Dj$ 도메인(혹은 아이피)로 수정

2. vi /etc/mail/local-host-names 열어서..
   위에서 지정한 도메인(혹은 아이피) 없으면 추가

 

3. vi /etc/hosts 열어서..
   위에서 지정한 도메인(혹은 아이피) 없으면 추가



위와같이 수정후 sendmail 재시작 하면 완료 됩니다.

'Mail' 카테고리의 다른 글

sendmail.cf 자주 쓰는 옵션 정리  (0) 2015.06.08
Mail 데이터 변환[.msg->.eml , .eml->.msg]  (0) 2012.03.08
Posted by 소울하트
시스템/기타2012. 10. 9. 12:47

451 See http://pobox.com/~djb/docs/smtplf.html.,

 

안녕하세요. 오늘은 SMTP 메일발송시 발생했던 문제에 대해서 정리하고자 합니다.

 

최근에 Windows 서버에 ASP로 구성된 웹페이지가 있습니다.

헌데 웹페이지에서 메일을 발송하는 소스를 실행시 몇몇받는 메일서버에서 거부를 하게 되고

메일 Queue 에 쌓이기만 하고 발송이 안되는 증상이 있었습니다.

 

헌데 로그에 451 See http://pobox.com/~djb/docs/smtplf.html.,  이러한 로그가 남는겁니다.

당장 로그를 확인하려 해당 페이지에 접속을 해보았습니다.

 

대략내용을 분석해보니..

 

웹에서 발송하는 메세지의 컨텐츠 내용이 잘못된 LF LF. 으로 메시지를 종료, 즉 컨텐츠의 내용을 마무리할때에 잘못된 LF LF. 로 하고 있고, 대부분 LF(줄바꿈) 로 메세지를 마무리하고 있는 경우 발송한다고 되어있네요.

위 페이지에서는 CR LF 형식으로 수정을 해줘야 된다고 말하고 있습니다.

(Your mailer is violating 822bis section 2.3, which specifically prohibits all bare LFs.

  노출된? LFs를 금지하는 822bis 섹션 2.3, 을 위반하였다고 되어있네요.. 맞나..? )

 

그리하여 웹소스를 확인해보니 컨텐츠의 내용이 chr(10) , 즉 LF 로 해당 라인을 마무리 하고 있었습니다..ㅜㅜ

ASP, 윈도우의 경우에는 메모장에서 Linux 나 Unix 계열에서 저장한 문서를 열어보면 줄바꿈이

 

    

 

이런형태(\n)로 저장이 되어집니다. Unix 계열에서는 줄바꿈 으로 정상적으로 출력이 되는데 말이죠..

그래서 윈도우에서 사용하는 ASP 파일에서는 chr(10) 앞에 chr(13)을 추가해줘야합니다.

 

좀 더 자세한 내용을 알기 위해서  찾아서 확인을 해보았습니다.

chr(10)은 캐리지 리턴이라 하며, 출력위치를 줄 맨 앞으로 옮기는거 입니다.

(타자기 로 비유하자면 글을 작성할때 오른쪽에서 왼쪽으로 글이 작성 되는데, 다음줄로 넘어가게 되면

 종이를 오른쪽 끝으로 쭉 민다음에 한줄만큼 줄을 올리게 됩니다. 이게 캐리지 리턴이라 생각하면 됩니다.)

chr(13)은 라인피드 라 하며, 커서가 위치한 곳에서 아래로 한줄 내리는 기능 입니다.

 

C 에서는 각각 \r, \n 을 의미하게 되죠.

그래서 도스나 윈도우에서는 원래 의미대로 해석되기에 텍스트파일에서 다음줄로 내려갈때 "\r\n" 을 사용합니다.

하지만 Unix 계열에서는 \n 이 \r\n 의 의미를 모두 포함하게 됩니다. 

때문에 Unix 계열에서 저장한 파일들을 윈도우 의 메모장에서 열어보게 되면 위 그림처럼 "\r\n" 이 아니기때문에

위 그림과 같은 문자로 표시하게 되고 글이 줄바꿈 없이 한줄로 보여지게 됩니다.

알아본 바로는 매킨토시쪽에서는 \r을 쓴다고 합니다.

따라서 엔터키가 캐리지리턴 인지 라인피드인지는 큰 의미가 없습니다. 프로그램에 따라 다르게 저장이 되니깐요.

(DOS(윈도우) 는 \r\n , Unix 는 \n , 메킨토시 는 \r )

 

정리하자면 ASP 소스상에서 chr(10), 즉!  \n 으로만 작성이 되어있기에 받는메일서버에서 잘못된 LF 로 메세지를

종료하고 있다고 판단하여 메시지를 거부하였던 겁니다.

(받는메일서버의 MTA 에 따라서 차이가 있는듯 합니다. 대부분의 포털사이트들은 송신이 잘 되었습니다.)

 

그리하여 chr(10) 를 chr(13)&chr(10) 로 변경해주고 메일을 발송하니 아주아주 송신이 잘 되는군요.^^

 

어떻게 도움이 좀 되셨나요? ㅎㅎ 위 문제때문에 삽질도 많이 하였는데 한편으로는 뿌듯합니다. ^^

이상입니다.

 

 

 

 

'시스템 > 기타' 카테고리의 다른 글

arp 정적(static) 설정 - linux, windows  (0) 2015.06.02
Posted by 소울하트