[PHP-users 24515] Re: メールサーバー確認方法

Ryuzo KOSAKI kosaki @ fip.fujitsu.com
2005年 2月 14日 (月) 12:40:37 JST


"[PHP-users 24513] Re: メールサーバー確認方法" の記事において 
yteraoka @ dti.ad.jpさん は書きました。

>外部から @example.com へメールを送ろうとした場合、MX を調べて
>そこへ送る以外に方法はありませんけど。

MXがなければ、example.com の A に送ってもいいはずです。(rfc2821
にあったような気が)

PHPのMLということで、こんな関数である程度のチェックもできます。

 function chkMailAddr($mail){

    if($mail<>""){
      if (!ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. '@'
              . '([-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'
              . '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+)$',$mail, $regs)) {
        return FALSE;
      }else {
        $domain_name = $regs[1];
        if(!getmxrr($domain_name,$mailserver)){
          if(!checkdnsrr($domain_name,'A')){
            return FALSE;
          }
        }
      }
      return TRUE;
    }
  return FALSE;
 }

正規表現のあたりとかカッコよくない(というか不完全な気がする)
のですが、配送はローカルなMTAにおまかせしてるので、まあいい
かな、と思ってます。


--
  小先隆三(こさきりゅうぞう)  Ryuzo KOSAKI <kosaki @ fip.fujitsu.com>
  PGP Finger Print = 77AA B78E 7E40 B51D 4A74 A6E8 8A4C 1E0F


PHP-users メーリングリストの案内