メール送信テスト
ローカル配送テスト
[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 件のコメント:
コメントを投稿