このWebサイト ひつじ帳 は、管理者がWEB関連の技術をまとめた備忘録サイトです。 Linux,CentOS,PHP,MySQL,Blogger,JavaScript,CSS について記録しています。

CentOS-5/qmail/動作確認等

[ qmail ]

メール送信テスト

ローカル配送テスト


[user@linux ~]$ echo to: root@host.example.jp | /var/qmail/bin/qmail-inject

ローカル配送テスト(mailコマンド)


[user@linux ~]$ mail -s "[タイトル]" [宛先(To)] -- -f [差出人(from)] << EOF [Enter]
本文入力 [Enter]
EOF [Enter]


※ 例1
[user@linux ~]$ mail -s "test" example@example.jp -- -f example@example.jp << EOS [Enter]
test [Enter]
EOS [Enter]


※ 例2
[user@linux ~]$ mail -s `"題名" | nkf -j` example@example.jp
test
.
Cc: copy@example.jp(空白でも可)


※ 例3
[user@linux ~]$ mail -s `echo "てすと" | nkf -j` info@example.jp <<EOF
> `echo "てすと" | nkf -j`
>
> EOF
[user@linux ~]$

telnet で送信


telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 127.0.0.1 ESMTP
HELO ←■ 入力 [Enter]
250 example.jp
MAIL FROM: from@example.jp ←■ 送信元メールアドレス [Enter]
250 ok
RCPT TO: to@example.jp ←■ 送信先メールアドレス [Enter]
250 ok
DATA ←■ DATA 入力 [Enter]
354 go ahea
From: from@example.jp ←■ 送信元のメールアドレス [Enter]
To: to@example.jp ←■ 送信先メールアドレス [Enter]
Subjet: test ←■ 入力 [Enter]
[Return]
Hello World ←■ 入力 [Enter]
. ←■ 入力 [Enter]
250 ok 1204611114 qp 27421
QUIT ←■ 入力 [Enter]
221 example.jp
Connection closed by foreign host.

PHP から送信

下のPHPスクリプトをサーバに設置してアクセスする
mailtest.php

<?php
//----- メール テスト送信スクリプト -----
//
// 下記のアドレスにアクセスする
// http://ドメイン/mailtest.php
//
//---------------------------------------

// メール送信
if($_GET['email']){
 $host = $_SERVER["REMOTE_HOST"];
 $addr = $_SERVER["REMOTE_ADDR"];
 if( !$host || $addr == $host ){ $host = @gethostbyaddr( $addr ); }

 // メール
 $body = "メール送信テスト\n";
 $body .= "\nIP ....: " . $addr;
 $body .= "\nHOST ..: " . $host;
 $body .= "\nBrowser: " . $_SERVER['HTTP_USER_AGENT'] . "\n";
 @Smail( 'root', $_GET['email'], 'メール送信テスト', $body, $_GET['mode'] );
 @header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
}
// デフォルト
else{
 echo '<h1>メール送信テスト</h1>';
 echo '<form action="'.$_SERVER['PHP_SELF'].'">';
 echo 'メールアドレス: <input type="text" name="email" value="" size="70" /><br />';
 echo '送信モード: <input type="radio" name="mode" value="0" checked="checked" />popen関数 <input type="radio" name="mode" value="1" />mb_sendmail関数<br />';
 echo '<input type="submit" value="テスト送信する" />';
 echo '</form>';
}

//****************//
//** メール送信 **//
//****************//
function Smail( $from, $to, $subject, $body, $mode=0 ){
 // モード[mode]
 // mode=0 popen関数
 // mode=1 mb_sendmail関数

 @mb_language( "Japanese" );
 @mb_internal_encoding( "UTF-8" );
 $path = @explode( " ", @ini_get( "sendmail_path" ) );

 //-- mode=1
 if( $mode == 1 ){
  $header = "X-Mailer: HitsujiMail\n";
  $header .= "From: ".$from."\n";
  if( $path[0] ){
   if( @mb_send_mail( $to, $subject.' - mb_send_mail関数', $body, $header ) ){ return true; }
   else{ return false; }
  }
  else{ return false; }
  return true;
 }
 //-- mode=0
 else{
  if( !$encode ){ $encode = 'auto'; }
  if( $pipe = @popen( $path[0]." -t", "w" ) ){
   if( $returnPath ){ @fputs( $pipe, "Return-Path: ".$returnPath."\n" ); }
   if( $replyTo ){ @fputs( $pipe, 'Reply-To: '.$replyTo."\n" ); }
   @fputs( $pipe, "X-Mailer: ADMail\n" );
   @fputs( $pipe, "MIME-Version: 1.0\n" );
   @fputs( $pipe, "Content-Transfer-Encoding: 7bit\n" );
   @fputs( $pipe, "Content-Type: text/plain; charset=\"iso-2022-jp\"\n" );
   @fputs( $pipe, "From: ".$from."\n" );
   @fputs( $pipe, "To: ".$to."\n" );
   @fputs( $pipe, "Subject: ".@mb_convert_encoding( $subject.' - popen関数', "JIS", $encode )."\n\n" );
   @fputs( $pipe, @mb_convert_encoding( $body, "JIS", $encode ) );
   @fclose( $pipe );
  }
  else{ @die( "メール送信に失敗しました" ); }
  return true;
 }
}
?>



メール受信テスト


[root@linux ~]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK <4432.1213348186@example.jp>
user user@example.jp ←■ ユーザ名 [Enter]
+OK 
pass "パスワード入力" ←■ パスワード [Enter]
+OK
stat ←■ STAT [Enter] で受信しているメールの件数とバイト数を取得する
+OK 2 3133
list ←■ LIST [Enter] でメール一覧取得する
+OK 
1 1555
2 1559
.
retr 1 ←■ "RETR+LISTで取得した番号" [Enter] でメール内容の確認
+OK
メールの内容が表示される
.
dele 1 ←■ "DELE+LISTで取得した番号" [Enter] でメールの削除
+OK
quit ←■ QUIT [Enter] で終了
+OK
[root@linux ~]#

メール不正中継拒否テスト

  • RBL.JP (http://www.rbl.jp/svcheck.php)
    【ホスト名】に自宅サーバーのホスト名(例:example.com)を入力して【Check】ボタンを押下する。
    19種類のテストが行われ、ページ最後尾に no relays accepted. と表示されればOK。

  • Bee Tools (http://beetools.trustbee.com/smtpcheck/)

  • abuse.net (http://www.abuse.net/relay.html)
    【Address to test:】にチェックするホスト名を入力して、[Test for relay]ボタンを押下


Relay test result
All tests performed, no relays accepted.

となればOK

telnetでサービスポート確認


[root@linux ~]# telnet localhost 110 ←■ POP3が使用するサービスポート110番がフリーになっていることを確認します。
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host: Connection refused
[root@linux ~]#
[root@linux ~]# telnet localhost 143 ←■ IMAP4が使用するサービスポート143番がフリーになっていることを確認します。
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host: Connection refused
[root@linux ~]#

MXレコードの設定

httpサーバ と メールサーバが異なる場合

  • mx1.example.jp(123.123.123.1)を***@example.jpのメールサーバー(優先度10)としたい場合
    
    mx mx1.example.jp. 10
    a mx1 123.123.123.1
    


nslookup で確認


[root@linux ~]# nslookup -type=mx example.jp
Server:         192.168.11.1
Address:        192.168.11.1#53

Non-authoritative answer: ←■ ①
example.jp     mail exchanger = 10 mx1.example.jp. ←■ ②

Authoritative answers can be found from:
example.jp     nameserver = ns2.value-domain.com.
example.jp     nameserver = ns3.value-domain.com.
example.jp     nameserver = ns1.value-domain.com.
mx1.example.jp internet address = 125.3.123.28 ←■ ③
ns3.value-domain.com    internet address = 59.106.14.70

[root@linux ~]#

  • ①は
    大元のDNSサーバからの返事ではありませんよ、という意味。
    ここではローカルのDNSサーバが代理で応答しているのでこのようなメッセージが出力されている。
    nslookupのネーム・サーバとして、example.jpのDNSサーバを直接指定すると、このメッセージは出力されなくなる。

  • ②は
    example.jpドメインへのメールを担当するサーバ(mail exchanger)は、「mx1.example.jp」であるという意味である。
    つまり、このドメインへメールを送信するならば、「mx1.example.jp」へ送ってください、という意味になる。

  • ③は
    mx1.example.jpというホストのIPアドレスを表している。

0 件のコメント:

人気記事

アーカイブ

ページ

このブログを検索