2015/02/23

spamassassin (debian jessie) セットアップ

Debian (jessie) exim4 の環境に SpamAssassin を追加する

前提
 ・ exim4 (exim4-daemon-heavy) がインストール済、設定済
 ・ spamassassin がインストール済

方針
 ・ ヘッダに判定を1行挿入するだけ
 ・ 振分けは、メーラーに任せる
    (例: Thunderbird) 次の迷惑メールヘッダを信用する: SpamAssassin

(1) exim4 から見た spamassassin のポート設定
 vi /etc/exim4/exim4.conf.template (ファイル名は単独設定ファイルの場合)
  メインの設定に、以下のような設定を追加する。
  (もともと似た内容があり、コメントアウトされている)

  spamd_address = 127.0.0.1 783 (同一サーバ上で、デフォルト設定の場合)

(2) exim4 Spam処理設定
 vi /etc/exim4/exim4.conf.template (ファイル名は単独設定ファイルの場合)
  acl_check_data に以下のような設定を追加する。
  (もともと似た内容があり、コメントアウトされている)

 warn
  spam = Debian-exim:true
  add_header = X-Spam-Status: \
   ${if <{50}{$spam_score_int}{Yes}{No}} (score $spam_score)

  ・ 他は長くて不要なので、X-Spam-Status の1行だけを追加する
  ・ 50 の数値は、フィルタを学習させながら調整する
  ・ score のあたりにタグを入れると、自分の判定であるとわかりやすい
    例) (score $spam_score example.com)

(3) exim4 再起動
 /etc/init.d/exim4 restart

2015/02/22

debian 8 (jessie) on GMO ALTUS

GMO クラウド (ALTUS) に Debian 8 (jessie) をインストールする

持込ISOで好きなOSを入れられるとのことで、トライ。

ポイント
 ・ ネットワークアクセスには、セキュリティグループ、IPアドレス、静的NAT が必要
 ・ セキュリティグループは、仮想サーバ作成前に必要
 ・ 静的NATの構成時には、仮想サーバが必要

Debian
 ・ この時期なので jessie
 ・ イメージは amd64 を使用
 ・ GRUBは、EFIリムーバブルメディアにも入れたほうがよさそう

ISOアップロード
 ・ コンソール > テンプレート > ISO 「+ISOの登録」
 ・ サイト構成によっては 「HTTP Server does not support partial get」 等で失敗
  → その場合は自サーバ等に仮置きし、そちらのURLを指定

セキュリティグループ作成
 ・ コンソール > ネットワーク > セキュリティグループ  「セキュリティグループの追加」
 ・ NATとあわせて、ファイアウォールのようなもの
 ・ 仮想サーバ作成時に必要
 ・ 仮想サーバとの紐付けは変更できないので、最初に作成

仮想サーバ作成
 ・ コンソール > 仮想サーバー 「+仮想サーバーの追加」
 ・ テンプレートはISOを選択 → マイISO
 ・ 構成は、とりあえず Mini Server を選択
 ・ ディスクは、Mini Server 上限の 20GB に設定
 ・ 作成したセキュリティグループを選択
 ・ 確認 → VMの起動

IPアドレス取得
 ・ コンソール > ネットワーク > 表示 IPアドレス 「+新しい IPアドレスの取得」
 ・ 静的NATの有効化 → 作成した仮想サーバを選択

Xen-tools
 ・ テクニカルガイドの手順に沿ってインストール
 ・ 利用可能OSにjessieは記載されていないが、スクリプトはjessieを認識する
 ・ debianのxen-toolsパッケージでも同じに見えるが、未検証
  → 検証には、GMO様のご協力が必要

2015/01/06

Windowsファイルアクセス

Windowsバッチファイルからのファイルアクセス手順のまとめ

処理(中身)抜き、読んだまま既存ファイルに追記する手順のサンプル。

(1) for文
for /f "delims=" %%i in (%SRC%) do @echo %%i>> %DST%

(2) PowerShell コマンドレット
Get-Content $src | Out-File $dst -Append -Encoding default

(3) PowerShell 行単位
$tesjis = [Text.Encoding]::GetEncoding("shift_jis")
$sr = New-Object System.IO.StreamReader($src, $tesjis)
$sw = New-Object System.IO.StreamWriter($dst, $true, $tesjis)
while (! $sr.EndOfStream) {
    $sw.WriteLine($sr.ReadLine())
}
$sw.Close()
$sr.Close()



(4) PowerShell バイナリ
$fmopen = [System.IO.FileMode]::Open
$ss = New-Object System.IO.FileStream($src, $fmopen)
$ds = New-Object 
System.IO.FileStream($dst, $fmopen)
$ds.Position = $ds.Length
while (0 -le ($b = $ss.ReadByte())) {
    $ds.WriteByte($b)
}
$ss.Close()
$ds.Close()



(5) VBS 行単位
Set oFso = WScript.CreateObject("Scripting.FileSystemObject")
Set oSrc = oFso.OpenTextFile(sSrc, 1)
Set oDst = oFso.OpenTextFile(sDst, 8)
Do Until oSrc.AtEndOfStream
    sLine = oSrc.ReadLine()
    oDst.WriteLine(sLine)
Loop
oDst.Close
oSrc.Close


(6) VBS 文字単位
Set oFso = WScript.CreateObject("Scripting.FileSystemObject")
Set oSrc = oFso.OpenTextFile(sSrc, 1)
Set oDst = oFso.OpenTextFile(sDst, 8)
Do Until oSrc.AtEndOfStream
    sChar = oSrc.Read(1)
    oDst.Write(sChar)
Loop
oDst.Close
oSrc.Close

(7) VBS バイナリ
Set oSrc = WScript.CreateObject("ADODB.Stream")
Set oDst = WScript.CreateObject("ADODB.Stream")
oSrc.Type = 1 'adTypeBinary
oSrc.Open
oSrc.LoadFromFile(sSrc)
oDst.Type = 1 'adTypeBinary
oDst.Open
oDst.LoadFromFile(sDst)
oDst.Position = oDst.Size
Do Until oSrc.EOS
    sByte = oSrc.Read(iBlockSize)
    oDst.Write(sByte)
Loop
oDst.SaveToFile sDst, 2 'adSaveCreateOverWrite
oDst.Close
oSrc.Close

2014/12/27

squid (debian) セットアップ

Debian (wheezy) の環境に Squid を追加する

前提
 ・ squid がインストール済

方針
 ・ 社内からのインターネットアクセスを、プロキシで管理する
 ・ 全てのアクセス履歴を長期保存する
 ・ 指定サイトへのアクセスを禁止、指定サイトは適宜追加変更する
 ・ キャッシュは当面用いない

(1) ブラックリスト追加
 /etc/squid/blacklist を作成する。
  リストには、URLを列挙する。
 /etc/squid/squid.conf に以下を追加する。
  acl blacklist dstdomain "/etc/squid/blacklist"
  http_access deny blacklist

(2) ポート変更
 /etc/squid/squid.conf で以下のポート番号を変更する
  http_port 8080 (ポート番号は例)

(3) DNS設定
 /etc/squid/squid.conf に以下を追加する。
  dns_nameservers 127.0.0.1 (アドレスは例)

(4) キャッシュが目的ではないので停止
 /etc/squid/squid.conf に以下を追加する
  cache deny all

(5) エラーページ設定
 /usr/share/squid-langpack/ja を適当な場所にコピーする。
  今のところ、ERR_ACCESS_DENIED のみ使用。
 /etc/squid/squid.conf に以下を追加する
  error_directory /home/user/error/ja (パスは例)

(6) ログ設定
 /etc/logrotate.d/squid を作成し、保存期間等を設定する。

(7) squid 再起動
 /etc/init.d/squid restart

2014/12/26

OCN/NTT 回線切り替え

インターネット回線切替えのワナ

事務所移転に伴い、NTT光回線の移設を手配したが、
長く使っている現行プランは既に無いとのことで、別プランに切替えることに。

1 正解

プロバイダのOCNでも、事前にプラン変更の手配が必要

2 失敗例

NTT: 土曜日 ONU設置 → PPPoEが接続できない
OCN: 土曜日 プラン変更依頼 → 法人窓口は平日のみ 9時半から
OCN: 土曜日 緊急、故障、等々の窓口に泣きつく → いずれも法人プラン変更は不可
OCN: 土曜日 同様のケースで、逆に光回線を旧プランに戻した例があるとの情報
NTT: 土曜日 旧プランに戻せないか依頼 → 一旦は翌日曜日の工事を手配
NTT: 土曜日 ビル共用エリアの入館手配が困難 → 日曜日の工事はキャンセル
OCN: 月曜日 9時半 法人窓口に変更依頼 → プラン変更には最低でも10営業日必要
NTT: 月曜日 再度、旧プランに戻す依頼 → 当日の工事は要員面で不可
NTT: 月曜日 必死で泣きつく → NTT局内のみの工事で、旧プランに切替え
OCN: 数日後 「プラン変更の件はどうされますか?」 と電話が来た

14時ごろ、なんとか開通するが、約半日の業務に多大な障害。
メールとホームページは、2日以上のダウン。

そもそもこちらの手配ミスだとは思うが、
こんな時のためにと、頼りにできる大手の法人プランに、、、

2014/11/26

oracle data guard パスワードファイル

Oracle (11g) Data Guard のワナ

プライマリとスタンバイのパスワードファイルは、同一でないといけないらしい。
それぞれ同じパスワードで再作成しただけでは同期できず、
同じファイルをコピーしたら同期できた。

2014/11/24

spamassassin (debian squeeze) セットアップ

Debian (squeeze) exim4 の環境に SpamAssassin を追加する

前提
 ・ exim4 (exim4-daemon-heavy) がインストール済、設定済
 ・ spamassassin がインストール済

方針
 ・ ヘッダに判定を1行挿入するだけ
 ・ 振分けは、メーラーに任せる
    (例: Thunderbird) 次の迷惑メールヘッダを信用する: SpamAssassin

(1) spamassassin イネーブル
 vi /etc/default/spamassassin
  ENABLED=0 を ENABLED=1 に変更する。

(2) spamassassin 起動
 /etc/init.d/spamassassin start

(3) exim4 から見た spamassassin のポート設定
 vi /etc/exim4/exim4.conf.template (ファイル名は単独設定ファイルの場合)
  メインの設定に、以下のような設定を追加する。
  (もともと似た内容があり、コメントアウトされている)

  spamd_address = 127.0.0.1 783 (同一サーバ上で、デフォルト設定の場合)

(4) exim4 Spam処理設定
 vi /etc/exim4/exim4.conf.template (ファイル名は単独設定ファイルの場合)
  acl_check_data に以下のような設定を追加する。
  (もともと似た内容があり、コメントアウトされている)

 warn
  spam = Debian-exim:true
  message = X-Spam-Status: \
   ${if <{50}{$spam_score_int}{Yes}{No}} (score $spam_score)

  ・ 他は長くて不要なので、X-Spam-Status の1行だけを追加する
  ・ 50 の数値は、フィルタを学習させながら調整する
  ・ score のあたりにタグを入れると、自分の判定であるとわかりやすい
    例) (score $spam_score example.com)

(5) exim4 再起動
 /etc/init.d/exim4 restart

(*) jessie
 ・ systemdに移行したので、(1) (2) は不要
 ・ messageadd_header
(2015.2.22)