만약에 qmail을 howto대로 설치하셨거나 lwq 대로 설치하셨다면 MS에서 사용하는 SMTP를 사용하는 경우  
모든 메일은 "status 256" 이라는 로그파일만을 남기고 수신이 거부되어집니다.

만약에 recordio를 사용하시거나 qmail-scanner등을 사용하셔서 debug 하신다면 아래와 같은 log를 보실 수 있을 겁니다.

w_c: STDOUT undefined - qmail-smtpd must be rejecting Email - exit

이와 같은 현상이 생기는 이유는 메일 서버로 사용하는 것이 아마도 MS-SMTP를 사용하기 때문에 생기는 것입니다.
혹은 exchange를 사용하더라도 실제 메일 을 발송하는 스크립트에 문제가 있기 때문이지요.

문제는 헤더에서 줄바꿈을 할때 CR/LF 의 스타일을 따르지 않고 dos스타일의 방식을 따르기 때문에
qmail-smtpd가 수신을 거부하는 것입니다.

qmail의 저자인 djb는 표준을 엄격히 준수해서 qmail을 코딩 하였기 때문에, 이런 형식에 어긋난 메일은 수신 거부를 하도록 코딩한 것 같습니다.

물론 그에 대한 해결방법도 djb가 마련해 놓았습니다.

ucspi-tcp 를 0.88버젼을 사용하신다면 /usr/local/bin 디렉토리에 fixcrio 라는 프
로그램이 있을 것이고, 그 이전 버젼을 사용하신다면 fixcr 이라는 프로그램이 있을
것입니다.

이 프로그램을 qmail-smtpd 앞에서 실행해 주시면 됩니다.

즉...

lwq스타일을 따른다면..

#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 1000000 \
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
-u $QMAILDUID -g $NOFILESGID 0 /usr/local/bin/smtplog \
/usr/local/bin/fixcrio /var/qmail/bin/qmail-smtpd 2>&1

이런식으로..
혹은 fixcr을 사용하신다면

#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
exec /usr/local/bin/softlimit -m 1000000 \
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
-u $QMAILDUID -g $NOFILESGID 0 /usr/local/bin/smtplog \
sh -c '/usr/local/bin/fixcr | /var/qmail/bin/qmail-smtpd' 2>&1

이런식으로 적어주신후 qmail을 restart하시면 해결됩니다..

728x90

+ Recent posts