postfix で RBL を利用する場合

Postfix で RBL を使用する場合、単純に「smtpd_recipient_restrictions」内のしかるべき場所に「reject_rbl_client」で指定してあげたら良いだけです。

ただ、改めてドキュメントを見ていると、返答された A レコードの内容によって通したり通さなかったり出来る模様でした。

smtpd_recipient_restrictions =
	permit_mynetworks,
	permit_sasl_authenticated,
	reject_unauth_destination,
	reject_rbl_client all.rbl.jp,
	reject_rbl_client bl.spamcop.net,
	reject_rbl_client zen.spamhaus.org=127.0.0.[2;3;4;5;6;7;10;11]

こんな感じで書いた場合、

  • all.rbl.jp および bl.spamcop.net で接続元 IPv4 (aaa.bbb.ccc.ddd だと ddd.ccc.bbb.aaa.rbl_domain の様な形式) で A レコードを引いて、何か値が返ってきたらブロック。
  • zen.spamhaus.org で引いた場合で、127.0.0.2, 127.0.0.3, 127.0.0.4, 127.0.0.5, 127.0.0.6, 127.0.0.7, 127.0.0.10, 127.0.0.11 のいずれかが返ってきた場合ブロック。

となる様でした。

なお、「reject_rbl_client」パラメータの「rbl_domain=」の後の IPv4 アドレスは Postfix 2.1 以降、[] 内の値を「;」文字で分割できるのは、Postfix 2.8 以降で使用できる模様です。

ちなみに、zen.spamhaus.org を使用している場合で、本当に設定が有効になっているかどうかを確認するには、設定したサーバから「nelson-sbl-test [アットマーク] crynwr.com」あてにメール送信をします。

正しく設定されていると、サーバ側のメールログにブロックされている旨が記録されますし、結果もメールで返送されてきます。

squid 3.1 設定のメモ (Debian GNU/Linux 7 での場合)

Debian GNU/Linux 7 での設定例です。キャッシュは使用しません。プロキシのポート番号は 8080 です。

■設定とインストール

・インストール

# apt-get install squid3

・認証用ファイルを作る

以下のような形式のプレーンテキストファイルを「/etc/squid3/passwd」に作成し、適切な権限を与えます。

Username:Password
# cd /etc/squid3
# echo "Username:Password" > passwd
# chmod 600 passwd
# chown proxy:proxy passwd

・squid3 の設定ファイルを編集

/etc/squid3/squid.conf を編集する。

# Digest 認証部分
auth_param digest program /usr/lib/squid3/digest_pw_auth /etc/squid3/passwd
auth_param digest children 5
auth_param digest realm Proxy Server
auth_param digest nonce_garbage_interval 5 minutes
auth_param digest nonce_max_duration 30 minutes
auth_param digest nonce_max_count 50

# キャッシュマネージャーの ACL
acl manager proto cache_object

# localhost の ACL
acl localhost src 127.0.0.1/32 ::1

# Digest 認証の ACL
acl passwdauth proxy_auth REQUIRED

# Proxy での SSL ポート番号並びに通すポートと CONNECT メソッドの ACL
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
acl CONNECT method CONNECT

# キャッシュマネージャーへのアクセス制限 (localhost のみ)
http_access allow manager localhost
http_access deny manager

# プロキシへのアクセス制限 (あらかじめ定義したポート、メソッドで localhost は許可、それ以外は Digest 認証が必要)
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow passwdauth
http_access deny all

# プロキシのポート番号
http_port 8080

# キャッシュ設定 (使用しない)
cache_mem 0 MB
cache deny all

# 実行ディレクトリ
coredump_dir /var/spool/squid3

# プロキシサーバが出力するヘッダを抑制
forwarded_for delete
via off

・設定確認

# squid3 -k parse

「via off」部分で WARNING が出ますが、ヘッダの抑制は行われます。

・再起動

# /etc/init.d/squid3 restart

■その他

squid3 が動作しているサーバが IPv6 アドレスも持っている場合、IPv4 な接続元から squid3 経由で通信すると、要求された接続先が IPv6 アドレスを持っている場合、IPv6 でアクセスすることを確認しました。プロキシ形での IPv4 <-> IPv6 変換としても使用できそうです。

Debian 8 + DNS64 + NAT64 on the Raspberry Pi 2

Debian 8 上に DNS64 + NAT64 を設定した備忘録である。例によって無保証である。

Linux カーネルのビルドは、「Kernel Building – Raspberry Pi Documentation」に記載の通り、DNS64, NAT64 関係は、「DSAS開発者の部屋:Raspberry Pi 2 で NAT64 箱をつくってみた」の通りとなる。

両者のドキュメントに感謝しつつ、実際に設定を行ってみた。なお、私の環境では、USB で NIC を接続して別インタフェースを接続している。

続きを読む

Raspberry Pi 2 Model B を AirPlay サーバに (Shairport Sync 利用編)

Raspberry Pi 2 Model B を AirPlay サーバに」で、「ShairPort」を使用して、AirPlay サーバを設定したのですが、以下の点で、若干問題が生じたのと、気になっていた点がありました。

  • iOS デバイス側で曲をスキップすると、再生が止まってしまう。
  • サーバ側で UDP ポートについて広い範囲で入力を許可としないといけない。

派生版 (?) の「Shairport Sync」を使用してみたところ、これらの問題を解決することが出来ました。


■前提条件

Raspberry Pi 2 Model B を AirPlay サーバに」の「ALSA の設定」の項目の設定が全て完了し、また前回と環境も同じであることとなります。

続きを読む

キャッシュ DNS サーバを BIND9 から Unbound へ移行

自宅内の DNS キャッシュサーバについて、BIND9 から Unbound へ移行してみました。

BIND9 はネット上に資料が豊富にあって、割と設定面では困らないのですが、度重なるぜい弱性への対応に疲れがちなので・・・。

例によって、自分用メモです。また、Debian GNU/Linux 8 環境で設定しています。

続きを読む

Raspberry Pi 2 Model B を AirPlay サーバに

何本煎じのネタかわからないぐらい情報がありますが、自分自身で Raspberry Pi 2 Model B 上の Debian GNU/Linux 8 (Raspbian ではない) のシステムに、「abrasive/shairport · GitHub」をインストールした際の記録です。

手元の iOS デバイスの音楽を、iOS デバイスと同一ネットワーク内のサーバに接続した USB-DAC 経由でスピーカーから流す、と言うのを行いました。

なお、サーバには既に avahi-daemon が設定済みであることが前提です。

続きを読む

Raspberry Pi 2 Model B 買ってみました

今さらなのですが、Raspberry Pi 2 Model B を買ってみました。Debian GNU/Linux をベースとした Raspbian での設定メモです。

初期設定などは、公式ドキュメントや、公開されている情報などを参考にさせて頂きました。ちなみに、主に参考にさせて頂いたのは、以下のサイトです。

基本的な設定と、root ファイルシステムを外付け HDD で運用するための設定については、上記サイトを参考にさせていただき、設定が出来ました。ので、ほとんど書くことがないのですが、それ以外でなじみのある x86 系統の Debian とちょっと違うと言うところについて備忘録程度に記載します。

  • ip6tables をいきなり実行しても使用できない
    ipv6 モジュールを先に読み込んでおく必要がありました。
    # modprobe ipv6
    で OK ですが、再起動時に有効にさせる場合は、
    # echo ipv6 >> /etc/modules
    しておいた方が良いかもです。

  • カーネルの起動オプションで「elevator=deadline」が指定されている
    今回は、外付け USB-HDD で root ファイルシステムを運用するので、「/etc/rc.local」に「echo “cfq” > /sys/block/sda/queue/scheduler」を指定しています。デフォルト設定がなぜ「deadline」なのかはよくわかりませんが、microSD で運用するケースではこちらの方が適しているのでしょうか ?

  • Linux のカーネルは、rpi-update コマンドで行う。
    Linux カーネルはどうも apt で提供されているもので起動しているのではなく、rpi-update コマンドでアップデートできる。(apt-cache search linux-image するとカーネルパッケージが表示されるが、dpkg で調べるとそれらはインストールされていない)

  • ファイルベースで swap が確保されている
    こちらは、swapoff で該当 swap の利用を停止して、
    # apt-get autoremove –purge dphys-swapfile
    にて設定を解除しました。
    (今回は外付け USB-HDD に swap 領域を切ってそちらを利用したため)

  • /etc/fstab で UUID でディスクをマウントすると、マウントできるのだけど、起動時に警告が出た
    と言うことで、/dev/sda1 みたいな指定方法で /etc/fstab を記載しました。

  • rkhunter を実行すると「/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so」について警告が出る
    これは「/etc/ld.so.preload」に該当ファイルを読み込む記述があるからですが、私はこのファイルについて特に問題ないものと思いましたので、「/etc/rkhunter.conf」ファイル中で、「SHARED_LIB_WHITELIST=”/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so”」して、除外としました。
    simonjhall/copies-and-fills · GitHub」が該当のようで、どうも memcpy, memset を最適化するもののようです。

    2015/07/09 追記
    Debian 8.0 ベースの Raspbian では、raspi-copies-and-fills パッケージのアップデートに伴い、preload されるファイルが /usr/lib/arm-linux-gnueabihf/libarmmem.so になっている模様です。(追記終わり)

  • SysVinit でプログラムの起動順序を変える
    bind9 と ntpd を導入したところ、ntpd が起動してから bind9 が起動するため、ntp.conf で FQDN で ntp サーバ名を書いていると名前解決できません。
    /etc/insserv/overrides/ntp を以下の内容で作成し、insserv を実行しました。

    ### BEGIN INIT INFO
    # Provides:        ntp
    # Required-Start:  $network $remote_fs $syslog bind9
    # Required-Stop:   $network $remote_fs $syslog bind9
    # Default-Start:   2 3 4 5
    # Default-Stop: 
    # Short-Description: Start NTP daemon
    ### END INIT INFO

と言うわけで、最初からある程度設定されているゆえに、どのように設定されているかがつかみにくかったですが、何とか自分が使用したい用途で使える状態に持って行けました。

また、散々言われているようですが、電源は結構シビアなようです。セルフパワー USB ハブからの給電では、起動できたり出来なかったりでしたが、2A の USB 給電アダプタにしたところ、安定して動作しています。

今回、実際のところ一番苦労をしたのって、ケースを「Raspberry Pi B+ 用ケース (819-3646)」とセットになっているものを購入したのですが、microSD の干渉部分は事前に情報があったのでわかっていたのですが、ケースの個体差か、意外にも USB インタフェース部分でちゃんとバリ取りがされていなかったので、それの処理でしょうか。

ntpd の IPv6 設定

いまいち、ntpd.conf の restrict において IPv6 ネットワークアドレスの指定方法がよくわからなかったのだけど、調べたら「AccessRestrictions < Support < NTP の『6.5.1.2.1. If you used ‘restrict default ignore’』」に載っていた。

と言うことで、以下のような想定の設定を ntp.conf に行ってみる。

■想定

上位の ntp サーバ: ntp.example.com
IPv4 ネットワークアドレス: 192.168.1.0/24
IPv6 ネットワークアドレス: 2001:db8:1:1::/64

localhost からはフルアクセス、192.168.1.0/24 および 2001:db8:1:1::/64 から時刻の参照だけ許可する。

■設定例 (/etc/ntp.conf)

driftfile /var/lib/ntp/ntp.drift
server ntp.example.com iburst
restrict -4 default ignore
restrict -6 default ignore
restrict 127.0.0.1
restrict ::1
restrict 192.168.1.0 mask 255.255.255.0 noquery
restrict 2001:db8:1:1:: mask ffff:ffff:ffff:ffff:: noquery
restrict ntp.example.com noquery

snmpwalk の出力を人間に優しい表示にする (Debian 8)

・/etc/apt/sources.list にあらかじめ non-free を付け加えておく。

・インストールする

# apt-get install snmp snmpd
# apt-get install snmp-mibs-downloader
# download-mibs

・/etc/default/snmpd の「export MIBS=」をコメント化する。

・/etc/snmp/snmp.conf の「mibs :」をコメント化する。

・サービス再起動

# /etc/init.d/snmpd restart

解決: Debian GNU/Linux 8 (Jessie) において reboot コマンドで再起動できない件

自宅の Wheezy なサーバを、Jessie にアップグレードしたのは良いのですが、なぜか Linux 3.16.0-4-686-pae カーネルで、

  • shutdown -r now
  • reboot

等で、再起動が出来ない現象が生じました。(shutdown -h now は出来るし、また Wheezy の Linux 3.2.0-4-686-pae カーネルで起動すると、ちゃんとリブートできる。)

解決方法としては、Linux のオプションとして「reboot=bios」を渡してあげることで、正しくリブートできるようになりました。

恒常的に設定する方法としては、/etc/default/grub ファイル中

GRUB_CMDLINE_LINUX_DEFAULT="quiet reboot=bios"

の様に設定してから、

# update-grub2

して、一旦シャットダウンした後、起動後、有効になります。