yoshio のすべての投稿

DKIMproxy導入覚書-はまり処満載で撃沈寸前!その2

DKIMproxyオフィシャルサイト

秘密鍵・公開鍵を作成したので、DNSゾーンファイルを編集します。

ポリシーレコード、セレクターレコード、2つのレコードを追加

ポリシーレコード、

_policy._domainkey.hstech.  600 IN  TXT "t=y; o=~; r=yoshio@hstech.net"
hstech._domainkey.hstech.net.   600 IN  TXT "t=y; k=rsa; p=公開鍵"

下記サイトでポリシレコードのチェックをします。
http://domainkeys.sourceforge.net/policycheck.html
結果は

 Testing hstech.net
Policy TXT=t=y;o=~;n=;r=yoshio@hstech.net;This policy record appears valid.

OKのようです。
次に下記サイトでセレクターレコードのチェックをします。
http://domainkeys.sourceforge.net/selectorcheck.html
結果は

hstech._domainkey.hstech.net
TXT Record length = 229
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCXxC8mmzt/x8VFnbzPWH1dSw/FU5qoIafLdCAqt

...aP8T1NhBvthFpKQku3gcTs72xZrj0h/I0dmzoFyI+f/emJ7VHuFPfYIyi8dwAc+Qq2vrJmKPYey3vL4q

...Im1SEyYWB4fzUdU9CynjOBeT+RziZcHIroQuQeWVXToqxuzAhaJQIDAQAB;k=rsa;t=y;

This selector is in error: Tag 'p': Invalid public key has no modulus

む!なんじゃいノーモデュラスって????

検索してみましたが思うような答えが見つかりません。

オフィシャルサイトの指示通り

Generate a private/public key pair using OpenSSL:

openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key

と鍵を再作成しても結果は同じでした。
ここで1日はまりました。とりあえずDKIMproxyを動作させて、吐かれるエラーメッセージ等から
解決策を探ろうと思い、DKIMproxyの設定をすることにしました。
変更箇所は太字部分のみ

/usr/local/dkimproxy/etc/dkimproxy_in.conf
# specify what address/port DKIMproxy should listen on

listen    127.0.0.1:10025

# specify what address/port DKIMproxy forwards mail to

relay     127.0.0.1:10026
/usr/local/dkimproxy/etc/dkimproxy_out.conf

# specify what address/port DKIMproxy should listen on listen    127.0.0.1:10027

# specify what address/port DKIMproxy forwards mail to relay     127.0.0.1:10028

# specify what domains DKIMproxy can sign for (comma-separated, no spaces)

domain    hstech.net,parts-recycle.net,hair-saloon.net

# specify what signatures to add simple

signature dkim(c=relaxed,a=rsa-SHA256)

signature domainkeys(c=nofws,a=rsa-SHA1)

# specify location of the private key

keyfile   /usr/local/dkimproxy/private.key

# specify the selector (i.e. the name of the key record put in DNS)

selector  hstech 
# control how many processes DKIMproxy uses

#  - more information on these options (and others) can be found by

#    running `perldoc Net::Server::PreFork'. #min_servers 5 #min_spare_servers 2

DKIMproxyの解凍ディレクトリから起動ファイルを/etc/rc.d/init.d/にリネームしてコピー

sample-dkim-init-script.sh ⇒ /etc/rc.d/init.d/dkimproxy

これでDKIMproxyの設定は終了

次に以下のサイトを参照しpostfixのmaster.cfを変更します。

http://dkimproxy.sourceforge.net/postfix-inbound-howto.html

これで受け取ったメールの検証が出来ます。

ためしにDKIM署名をしているgmailとしていないplalaのメールのヘッダーを比較してみます

gmailヘッダー(抜粋)

Return-Path: <hstech99@gmail.com>

Received: from dns2.hstech-net.com ([unix socket])

by dns2.hstech-net.com (Cyrus v2.2.13p1-Invoca-RPM-2.2.13p1-4vl4) with LMTPA;

Fri, 30 Nov 2012 14:25:24 +0900

X-Sieve: CMU Sieve 2.2

Received: from dns2.hstech-net.com (localhost [127.0.0.1])

by dns2.hstech-net.com (Postfix) with ESMTP id 735426203F6

for <yoshio@hstech.net>; Fri, 30 Nov 2012 14:25:24 +0900 (JST)

Authentication-Results: dns2.hstech-net.com; dkim=pass header.i=@gmail.com 
X-DKIM-Authentication-Results: pass 

Received: from mail-ie0-f176.google.com (mail-ie0-f176.google.com [209.85.223.176])

by dns2.hstech-net.com (Postfix) with ESMTP

for <yoshio@hstech.net>; Fri, 30 Nov 2012 14:25:24 +0900 (JST)

Received: by mail-ie0-f176.google.com with SMTP id 13so124242iea.7

for <yoshio@hstech.net>; Thu, 29 Nov 2012 21:25:23 -0800 (PST)

DKIM-Signature: 略

検証結果=pass が確認できます。

plalaヘッダー(大部分略)

Return-Path: <hskimura@blue.plala.or.jp>

Received: from dns2.hstech-net.com ([unix socket])

by dns2.hstech-net.com (Cyrus v2.2.13p1-Invoca-RPM-2.2.13p1-4vl4) with LMTPA;

Sat, 01 Dec 2012 09:37:55 +0900

X-Sieve: CMU Sieve 2.2

Received: from dns2.hstech-net.com (localhost [127.0.0.1])

by dns2.hstech-net.com (Postfix) with ESMTP id 581816203D7

for <yoshio@hstech.net>; Sat,  1 Dec 2012 09:37:55 +0900 (JST)

Authentication-Results: dns2.hstech-net.com;

X-DKIM-Authentication-Results: none

これで受信メールの検証確認が出来ました。

次はいよいよ署名を付ける設定です。でもまだまだ先は長いかも・・・・・

DKIMproxy導入覚書-はまり処満載で撃沈寸前!その1

DKIM(DomainKeys Identified Mail)は迷惑メール対策の技術の一つでで自ドメインでの導入記録です。

DKIMとは 参照:dkim.jp FAQ こちらに詳しい説明があります。

財団法人日本インターネット協会 技術解説DKIM

・まずは使用ソフトウェアの選択

総合的に判断してDKIMproxyを使用することとしました。

こちらのサイトを参考にインストールをしましたがはまりどころ満載で恥を承知で公開します。

Mail-DKIM and DKIMproxy 日本語化がほとんど進んでいないので苦労しました。

Downloadページの指示に従い以下のperlモジュールをインストールします。以下

Mail::DKIM requires the following Perl modules:

適当訳-Mail::DKIMは以下ののパールモジュールを必要としています

  • Crypt::OpenSSL::RSA
  • Digest::SHA
  • Mail::Address
  • MIME::Base64
  • Net::DNS

 

DKIMproxy is written in Perl. It requires the Mail::DKIM module, found on this page, as well as the following Perl modules:

適当訳-DKIMproxyはPerlで書かれています。それにMail :: DKIMのモジュールと同様に、以下のPerlモジュールが必要です

  • Net::Server (use the latest version, if possible)
  • Error

CPANのご厄介になるわけですがこちらのサイトが参考なります。CPAN初級

書くと簡単ですが、依存関係で色々エラーが出てここまで結構時間がかかりました。

Download the Mail-DKIM Perl module:

Version 0.39 [CPAN].

これでやっとMail-DKIMのインストールに到りました、続いてDKIMproxyです。

Download the current version of DKIMproxy:Version 1.4.1 [SourceForge].

ダウンロードしたら適当なディレクトリに解凍します。(インストール先は指定できるので)

tar xzf dkimproxy-1.3.tar.gz

cd /path/dkimproxy-1.3 解凍したdkimproxyに移動

./configure –prefix=/usr/local/dkimproxy

make install

dkimproxyのインストールはこれで完了です  参考サイト

・次に鍵の作成です。

# cd /usr/local/dkimproxy

# openssl genrsa -out private.key 1024

# openssl rsa -in private.key -pubout -out public.key

これでprivate.keyとpublic.keyが作成されます。

順調に見えますがここまで1日半ぐらいかかってます。以下次回

 

 

docomoスマホSPモードでテザリングVPN接続

iPhoneを使用してPPTPで自社ネットワークに接続していた方が、docomoのスマホに変えたら

接続が出来なくなったとのお話で、調べてみたらdocomoのSPモードではPPTPは使用できないらしい。

docomoのテザリングで旧iPhoneもVPNで使用する意向なのにこれでは何にもならない。

調べたところ。spモードでもL2TPならVPN接続が出来るらしい。

幸いなことにL2TPに対応しているRTX1200を使用しているので早速チャレンジしてみました。

YAMAHAのサイトを参考にして設定してみましたがどうもうまくいきません。

はまったのは、トンネルの暗号アルゴリズムと認証アルゴリズムの設定、上記サイトには複数のプロトコル

に対応しているとありましたが、成功したのは1組だけでした。

RTX1200のスマホ対応のL2TP設定は、以下です

RTX1200コンフィグ抜粋

pp select anonymous

pp bind tunnel20-tunnel22 トンネルは、同時接続するユーザー分必要なようです。

pp auth request mschap-v2  iPhone アンドロイドどちらもmschap-v2で認証できました。

pp auth username ユーザー1 パスワード

pp auth username ユーザー2 パスワード

pp auth username ユーザー3 パスワード

ppp ipcp ipaddress on

ppp ipcp msext on

ppp ccp type mppe-40  “mppe-any”ではNGでした

ppp ipv6cp use off

ip pp remote address pool 192.168.*.30-192.168.*.35

ip pp mtu 1258

pptp service type server

pp enable anonymous

トンネルコンフィグPPTPとL2TP両方使用するため混在してます。

PPTPトンネル

tunnel select 20

tunnel encapsulation pptp

tunnel enable 20

L2TPトンネル1

tunnel select 21

tunnel encapsulation l2tp

ipsec tunnel 101

ipsec sa policy 101 21 esp aes-cbc sha-hmac   この組み合わせでiPhone アンドロイドともOK

ipsec ike keepalive use 21 off

ipsec ike local address 21 192.168.*.1

ipsec ike nat-traversal 21 on

ipsec ike pre-shared-key 21 text パスワードL2TPトンネルでは同じ共有キーにする

ipsec ike remote address 21 any

l2tp tunnel disconnect time off

l2tp keepalive use on 10 3

l2tp keepalive log on

l2tp syslog on

ip tunnel tcp mss limit auto

tunnel enable 21

L2TPトンネル2

tunnel select 22

tunnel encapsulation l2tp

ipsec tunnel 102

ipsec sa policy 102 22 esp aes-cbc sha-hmac

ipsec ike keepalive use 22 off

ipsec ike local address 22 192.168.*.1

ipsec ike nat-traversal 22 on

ipsec ike pre-shared-key 22 text トンネル1と同じキー

ipsec ike remote address 22 any

l2tp tunnel disconnect time off

l2tp keepalive use on 10 3

l2tp keepalive log on

l2tp syslog on

tunnel enable 22

トランスポート設定

ipsec transport 1 101 udp 1701

ipsec transport 2 102 udp 1701

サービス開始

pptp service on

l2tp service on

別途静的NATの設定が必要(上記YAMAHAのサイトを参照)

例:ご自分の環境に読み替えてください

nat descriptor masquerade static 1 1 192.168.100.1 esp

nat descriptor masquerade static 1 2 192.168.100.1 udp 500

nat descriptor masquerade static 1 3 192.168.100.1 tcp 1723

nat descriptor masquerade static 1 4 192.168.100.1 gre

フィルターを通す設定

例:ご自分の環境に読み替えてください

ip filter 200080 pass * 192.168.100.1 esp * *

ip filter 200081 pass * 192.168.100.1 udp * 500

ip filter 200082 pass * 192.168.100.1 udp * 1701

RTX1200側の設定は以上です。

次にdocomoのスマホの設定をします。

YAMAHAのサイトにアンドロイドの設定法がありますのでこれを参考にします。

L2TP/IPsec PSK VPNを追加を選択します。

L2TPセキュリティ保護云々はスルーします。

説明どおりに進めます。これでSPモードのスマホからVPN接続が出来ます。

おめでとう!

次にこのスマホのテザリング機能を使用してiPhoneでVPN接続をします。

テザリングで使用できていれば

YAMAHAのサイトの方法で問題なく使用できました。

わたしのソフトバンクiPhone5のテザリング機能は来月15日にならなければ使用できないので

検証できませんが、PPTPが使えなくてもL2TPで使用できることがわかって安心しました。

後日検証出来たら報告したいと思います。

 

NASのアップグレードはRAID6に決定-サーバ1設定

 

結局HDL-XR2U4.0の初期設定のRAID6で使用することにしました。

HDD2台の障害に対応できるとの事で、RAID5+ホットスワップよりも信頼度が高そうです。

Window sから利用するエリア(disk1)とサーバから利用するエリア(server_share)に分けて

server_shareはさらにバックアップをするサーバごとにサーバ名のディレクトリを作成しました。

サーバ名のユーザーを作成し、server_shareのアクセス権を付与しました。

バックアップするサーバにNASをマウントします。

◎遠隔地のサーバ1は古いディストリビュージョンです。smbmountを使用して/var/hstechにマウントしました。

設定ファイル、ホームディレクトリ、PostgreSQLデータをバックアップします。

マウントしてしまえば、既存のNFS使用のNASと同様に使用できるのでこれがBESTの方法かもしれません。

1昨日朝のひたちなか海浜鉄道です。

ストレージ(NAS)のアップグレード

NASで提供している共有サービスは、①Microsoftネットワークファイル共有、②AppleShareネットワークファイル共有③FTP

の3つが多く、NFS(Linux Network File System)に対応しているモデルは多くありません。

いま使用している古いLogitecのNASは、NFS対応なので、NFSでサーバのバックアップを取ることができます。

RAID(ミラーリング)構成なので安心はしておりますが、なにぶん古いものなので容量も少なく(120GB)

HDDもIDEで調達も難しくなってきてます。(予備のHDDは確保しておりますが)

現状ではサーバのバックアップのみで、デスクトップPCのバックアップまではまわりません。

そこでNASのグレードアップをしようと思い、IOデータの1TB×4のNASを手に入れました。

http://www.iodata.jp/product/hdd/lanhdd/hdl-xr2u/

ホットスペア対応のようなので、1TBのHDD3個でRAIDを組んでホットスペア1という安全設定にする予定です。

ただNFS未対応なので、Windows のファイル共有かFTPを使用するしかありません。

WindowsPCのバックアップには、もんだいありませんが・・・・・・・・・

サーバのバックアップにはFTPを使用するほうが良いのかもしれません、詳細は設定が終わってから

覚書として書きたいと思います。

 

iphone5 に機種変更

ipd3を0から定額で使用しているため、iphone5のテザリング機能があれば、光ポータブルも

必要なくなり出先でのデータ通信料はiphone5だけでよくなります。

自宅ではWiFiを使用しているので、月7Gを越データ量はないと思いますし・・・

ただ今使用しているぷららモバイルの契約解除料(2年しばり)がばか高い!

 

 

リストボックスではまった!!

原因が分かれば、たわいのないことだったのでしょうが、はまってしまった。

50ぐらいのデータから、複数選択してDBに格納することが必要になりました。

一覧で既選択を見やすくするのに、リストボックスを4つ並べてみました。

multipleで複数選択を可能にし、name=list1~list4で選択アイテムを投げてみました。

DBには単にカンマでつなげて格納し、取り出すときにexplodeで配列に取り込み、さてどうしたら

selectedで既選択にすればいいかなと悩んだ末に

for($i=0;$i<12;$i++){

if(in_array($i,$array)){

print”<OPTION value=””.$i” selected>”.pg_result($r,$i,1).”</OPTION>”;

}else{

print”<OPTION value=””.$i”>”.pg_result($r,$i,1).”</OPTION>”; }

と4つ並べてみました。(1つのリストボックスに12アイテムづつ並べたので、12単位で)

うまくいったように見えたのですが、最初のリストボックスの最初のアイテムが

いつもselectedになってしまいます。

in_arrayで”0”は適切な検索が出来ないのだろうと思い、何かほかの方法がないかと

考えてみてたら・・ふと最初の50ぐらいのデーターは、1から番号を振っていたのを思い出しました。

if(in_array($i,$array)){

print”<OPTION value=””.$i” selected>”.pg_result($r,$i,1).”</OPTION>”;を

if(in_array(pg_result($r,$i,0),$array)){

print”<OPTION value=””.pg_result($r,$i,0).”” selected>”.pg_result($r,$i,1).”</OPTION>”;

とするだけのことでした。あ~あつかれた!