티스토리 뷰

메일을 PHP로 받아서 파싱하기


[포인트]
sendmail 의 alias 기능을 이용해서 PHP 쉘 스크립트를 구동시킨다.
(다른 모든 메일서버에서도 비슷한 방법으로 사용이 가능하다.)

[준비사항]
1. sendmail 의 환결설정 파일에서 프로그램실행이 가능하도록 수정한다.
2. 특정한 이메일 아이디를 하나 선택한다.

[/etc/sendmail.cf 파일수정]
맨 아랫줄에 보면 아래와 같은 구문이 있다.. 대충 아래와 같이 수정한다.
Mprog,          P=/bin/sh, ………
                    T=X-Unix/X-Unix/X-Unix,
                    A=/bin/sh -c $u

[/etc/aliases 에 계정추가]
# PHP Mailer
phpmailer:      |/root/phpmailer.php

[/root/phpmailer.php 파일작성]
#!/usr/local/bin/php
<?php

$fp = fopen("php://stdin","r");
while(!feof($fp)) {
    $line = fgets($fp, 1024);
    #여기서 파싱작업을 수행함..
}
fclose($fp);

?>

 

 

 

Here is how you can pipe incoming email to a php script, so that email can be processed by a php script. This setup is tested on Centos 5 (RHEL 5). 

1. Create a standalone php script, and make the file executable. Start the file with: 


#!/usr/bin/php 
<?php 
... 
?> 

bash# chmod 755 {script-name} 



2. Edit the /etc/aliases file, and modify the user you wish to process. 


# /etc/aliases file... 
admin: "|/path/to/php/script.php" 

# Rebuild the alias file by running the 'newaliases' command. 
bash# newaliases 



3. Create the symbolic links in the /etc/smrsh folder, so that sendmail will know about the script. If you don't do this, you'll see "Service unavailable, php not available for sendmail program" error message. 


bash# cd /etc/smrsh 
bash# ln -s /usr/bin/php 
bash# ln -s /path/to/php/script.php 



4. Restart sendmail. 


bash# service sendmail restart 



For more information, please read reference links above.

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크