とりあえず、物覚えが悪いので、記録、記録・・・と。。。^^; (前回と一緒のくだりだ:笑)
今回は Tips4 で紹介した postfix と MySQL の連携に加えて、それを更新するためのインターフェースを
PHP を使って行おうというものです。
まず、前提条件が必要になります。
・Apache が動いていること(私のシステムは Apache/1.3.14 です)
・Apache から PHP が使えること(私のシステムは PHP Version 4.0.6 です)
・ PHP から MySQL が使えること
です。
では、PHP のプログラムを紹介します。
プログラム名は mailforward.php です。
<html> <head> <title>メール転送設定画面</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head>
<body bgcolor="#FFFFFF" text="#000000">
<h2><font color="#FF0000">転送設定</font></h2> <font color="#000000">宛先と転送</font>先を指定します。 <br> <form name="form2" method="post" action=""> <input type="text" name="alias" size="15"> @applabo.com 宛のメールを <input type="text" name="forw_addr" size="50"> へ転送する。 <input type="submit" name="AddButton" value="実行"> <br> <br> 例)endo@applabo.com 宛のメールを endo@hogehoge.net へ転送する。<br> どちらも endo にすると、サーバユーザにも届く(複数転送先となる) </form> <hr> <h2><font color="#FF0000">現在の転送設定状況</font></h2> 転送先に「@...」が付いていないものはこのサーバ自身のユーザに送信します。<br> <form name=form1 method=post action=mailforward.php> <?php $hostname="localhost"; if( !$my_con=mysql_connect($hostname, "mailalias", "hogehoge" )) { print "Fail to connect on localhost<br>"; exit; }
$row=mysql_select_db("mailalias", $my_con );
if (isset($AddButton)) { if(!$result=mysql_query("insert into mxaliases set alias='$alias', forw_addr='$forw_addr'")) { print "Fail code =".mysql_errno()."<br>"; exit; } }
if (isset($DeleteButton)) { for ( $i = 0; $i < count($del); $i++ ) { if (isset($del[$i])) { if(!$result=mysql_query("delete from mxaliases where Number=$del[$i]")) { print "Fail code =".mysql_errno()."<br>"; exit; } } } }
if(!$result=mysql_query("select * from mxaliases order by alias")) { print "Fail code =".mysql_errno()."<br>"; exit; }
if (mysql_num_rows($result) == 0) { print "転送設定無し"; print "</form>\n</body>\n</html>"; exit; } ?> <TABLE border="0"> <?php $i = 1; print "<TR><TD>削除</TD><TD></TD><TD></TD><TD></TD><TD></TD><TD></TD></TR>\n"; while($row=mysql_fetch_array($result)) { print "<TR>\n"; print "<TD><input type=\"checkbox\" name=\"del[]\" value=" . $row[0] . "></TD>"; print "<TD><font color=\"RED\"><B>" . $row[1]."@applabo.com</B></FONT></TD>\n"; print "<TD> にメールが届いたら </TD>\n"; print "<TD><font color=\"RED\"><B>" . $row[2] . "</B></FONT></TD>\n"; print "<TD> へ転送します。 </TD>\n"; print "</TR>"; $i += 1; }
mysql_free_result($result); if (!mysql_close($my_con)) { print "Fail to disconnect on localhost<br>"; } ?> </TABLE> <br> <input type="submit" name="DeleteButton" value="削除"> </form> </body> </html>
これで出来上がりです。簡単でしょ。
これにプラスして、/usr/local/etc/apache/httpd.conf の <Directory "/usr/local/www/data"> エントリの AllowOverride に Limit を加え、.htaccess を同じファイルに置きます。内容は以下のような物です。
<Limit GET POST> order deny,allow deny from all allow from 192.168. </Limit>
これを入れると 192.168.0.0/16 以外(うちの環境では local 環境以外)のアクセスが抑制されます。
つまり、社外からこのアドレスにアクセスしても表示されないんです。社内からのみのアクセスが許可されます。
だって、社外から転送設定いじられたら困るもんね(笑)。
あとは、Apache を再起動すれば出来上がりです。