OpenPNE에서 SendMail 설정하는 방법 (휴대폰에서 파일 업로드)

OpenPNE에서 SendMail 설정하는 방법 (휴대폰에서 사진등록 가능하도록)

DNS설정가능하면、sns.example.com 이런 형태의 OpenPNE용의 서브 도메인을 작성해서 MX레코드를 설정해 두면 사용하기 쉽다

sns.example.com 을 메일용으로 할 경우
DNS 에서 sns.example.com 가 설정되어 있다는 전체하에 다음과 같이 연결하면 된다


1. config.php
define('MAIL_SERVER_DOMAIN', 'example.com');

2. vi /etc/mail/local-host-names
sns.example.com

3. vi /etc/mail/virtusertable
@sns.example.com sns-ktai@example.com

4. 3번 설정이 완료 되면 반영시키기 위해 아래 명령어 실행
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable

5. vi /etc/aliases 파일에 아래 코드 추가
sns-ktai: "| php /path/to/openpne/bin/mail.php"

6. aliases 설정이 끝나면 아래 명령어 실행
# newaliases
--> 결과(오류아님) /etc/aliases: 78 aliases, longest 37 bytes, 819 bytes total

이것으로@sns.example.com쪽으로 오는 메일은 OpenPNE_DIR/bin/mail.php에서 처리하도록 설정했다 하지만 、실제로 실행해 보면 실행되지 않고 메일로그를 보면 아래와 같은 메세지가 출력 된다.

Nov 19 15:50:44 hoge sendmail smrsh: uid 8:
attempt to use "| php /path/to/openpne/bin/mail.php" (stat failed)

php 부분을 /usr/bin/php 등 전체경로로 설정해 주어야 하는데
sendmail 이 실행하는 smrsh 라는 것이 sh 보다 엄격해서 에러가 나버린다.

이것은 /etc/smrsh 아래에 /usr/bin/php 심볼링 링크를 생성하면서 문제를 회피할 수 있다

7. $ ln -s /usr/bin/php /etc/smrsh/php


php소스 컴파일을 하였다면 예를 들어 /usr/local/src/php가 루트 폴더일때
/usr/local/src/php/bin/php로 설정해 주면 이상없이 동작한다

debug : 서버에서 메일전송 및 php 연동 테스트 하는 방법 (echo 이용)

echo -e "From: sns-ktai@sns.thenamed.net\nTo: sns-ktai@sns.thenamed.net\n\nThis is TEST."

/usr/bin/php -d safe_mode=off /html/webroot/thenamed/bin/mail.php