メールサーバー考

一時、メール受信のルールを厳しくして迷惑メールの受取拒否してたら、家のサーバーやVPSからのメールが受信できなくなっていた。

受取拒否だと、全く何の通知も無くメールが消えるので、とりあえず、迷惑メールのフォルダに入るように設定して様子を見ていた。

普段VPN環境でLANのプライベートアドレスでサーバーに接続していたが、IPv6での接続を試す為に、sshでログインすると、メールが飛んできた。

そういや、外部からログインしたら、メールを飛ばすってのをVPSや家のサーバーでやってたのを思い出した。

ちなみに、それぞれのサーバーは、LANのIPアドレスでログインしたら、パスワード認証が使えて、グローバルIPアドレスには証明書認証しか通さないようになっている。

従って、国家機関がスーパーコンピューターを使って解読でもしない限り、外部からログインされたというメールが飛ぶ事はほぼ無い(はずw)

最近のメールサーバーは、送信元IPアドレスが正当な送信者であるかを判定して、もし、正当でない場合は、受信拒否したり、迷惑メールフォルダに放り込んだりできる。

エックスサーバーの場合は、Return-Path: に正式なアカウントのメールアドレスが設定されてないと迷惑メールの判定になる。

例えば、root@noizumi.orgとか、noizumi@noizumi.orgとか、サーバーの設定によっては容易に Return-Path:に設定されちゃうようなアドレスだとダメ。

VPSの方は正常に届くように設定を追加して問題は無くなったが、家のサーバーはDS-Liteのゲートウェイの共用IPアドレスなので、正当な送信者として登録すると、成りすましを許してしまう事になる。

正常に送信できるVPSのメールサーバーに家のサーバーからSMTP AUTHでメールを送信するかと、せっせと設定し始めたが、よく考えたら、VPNでLANを構築してるので、postfixに192.168.0.0/16 をmynetworksに指定するだけだと気づいた。

そうすれば、LAN内のマシンなら、VPSにメールなげたら、プロバイダのサーバーへリレーしてくれる。なんでこんな簡単な事にすぐ気が付けなかったのやら。

ヤキが回ってるな 🙁

我、radikoト格闘ス

いつも、会社ではAFN goのTOKYO Eagleを聞いている。
しかし、昨日から、「あんたの場所だと聞けないよ(いい加減な意訳)」というアナウンスが流れて聞けない状態。

VPNでの家のIPアドレスや会社のIPアドレス、携帯電話のiijmioのIPアドレスどれを試しても、前述の状態なので、恐らく、IPアドレスの国別判定処理をミスってるのだろう。

しょうがないので、radikoでも聞くかとページを開いてみると、兵庫判定。

e-radio でムーディ勝山聞きたいので、家にVPN接続したまま滋賀判定を勝ち取るべく作業開始。

radiko.jp のIPアドレスは 203.211.199.120なので、radikoへのアクセスは会社のルーター経由にする。

$ sudo route add -net 203.211.199.0 gw 192.168.1.1 netmask 255.255.255.0 enp3s0

以前はこれで良かったのが、兵庫判定から変わらず。
多分、どこか別のサーバーでエリア判定してる。

ブラウザのデベロッパーツールで、”area” の付いてるURLを探す。

area.js で api.radiko.jp なんてサイトにアクセスしてるのを発見したが、

$ nslookup api.radiko.jp

api.radiko.jp canonical name = api.radiko.jp.cdn.cloudflare.net.
Name: api.radiko.jp.cdn.cloudflare.net
Address: 104.18.15.115
Name: api.radiko.jp.cdn.cloudflare.net
Address: 104.18.14.115

cloudflare で負荷分散してんのか。
cloudflareも会社のルーターを通すようにする。

$ sudo route add -net 104.18.0.0 gw 192.168.1.1 netmask 255.255.0.0 enp3s0

これで滋賀判定になった 🙂

radikoはセキュリティ強化してるみたいで、今まで東京判定で聞けていたKagoya VPS経由でのアクセスは不可になった。

以前は一旦会社のIPアドレスで滋賀判定出した後に、家にVPN接続して e-radio が聴けていたのが、今は「再生に失敗しました」となる。

地元ラジオ聞くのも一苦労だな。 🙁

asahiネット開通

書類がやっと届いた。

で、説明をよく読むと、対応ルーターなら線繋ぐだけで、何も設定せずに繋がるとな!?

BUFFALOのWSR3600BE4Pシリーズって今年の3月に発売されたばかりのルーターだが、対応機種一覧には載って無くて、まあ、BUFFALOなら大丈夫やろと買ったもの。

結論から言うと、ちゃんと線を繋いだだけで、インターネットに繋がった。NTT西日本からメールで回線IDとか問い合わせが来ていたが、回線IDで認証してるのかな?

速度テストしてみると、アップロードは前の半分位のスピードで、ダウンロードは50Mbpsほど速いな。

まあ、満足できるスピードだろう。

IPv6接続になった事で、v6コネクトのゲートウェイ通るから、ルーターのポート変換のリストがごっそり要らなくなった。

事実上、VPSに立てたSoftEther VPN Server経由で、家のネットにアクセスするしか無くなった。

irc.noizumi.org のVPN接続は、IP MasqueradeでVPSから直接アクセスしにいくようにしているが、その設定を切って、デフォルトゲートウェイを家のルーターにしたら、全てのVPNの通信は、家のルーター経由になるから、また設定変えよう。

WineでSoftEther VPN Server Managerを動かす

SoftEther のVPNサーバーを弄るのに、LinuxだとGUIのツールが無くて不便だったが、LinuxでWindowsのプログラムを動かすWineを使えるというのは盲点だった。

で、irc.noizumi.org内を見ていると、そういや2つ仮想Hubがあって、一つは irc.noizumi.org で、もう一つは家のサーバーだった。

irc.noizumi.org のHUBに接続して、AbemaTVなんかのサイトに接続すると、接続元が Kagoya のVPSのIPアドレスなので、蹴られてしまう。

しかし、irc.noizumi.orgにある家の仮想HUBにつないだら、インターネットへのアクセスは家のルーターから出る事になるので、今なら povo2.0のIPアドレスでの接続になるから蹴られない。

L2TP/IPSecのユーザー名で、ユーザー名@Hub名で指定してやれば、irc.noizumi.orgに接続しても、家のネットワーク環境に接続できるという便利な機能を忘れてたな。

asahiネットが未だにログイン情報を送って来ないので、povo2.0 の週末3日感使い放題のトッピングに課金した。

なんせ期間限定で6月2日 9:00までしか申し込めないのと、24時間使い放題×5の残りがあと2つだったので、それを使ったら残り1つでもう後が無い状態だったから。

もうそろそろ1週間になるけど、bb excite とかWebで申し込んですぐ使えたのに、紙でログイン情報郵送してきて、かつNTTからも確認メールが来るなんて思っても見なかったわ 🙁

silverfox.noizumi.orgのSSL証明書更新

家のホームサーバーのCronからのメールで、silverfox.noizumi.org のSSL証明書更新に失敗したと来た。

まあ、今、家の回線は光じゃなくて、povo2.0で繋いでるが、asahiネットのIDとパスワードを記載した書類が届いていないので、未だに光回線難民なのである。

動的IPアドレスをDNSに自動登録するスクリプトを組んでるので、silverfox.noizumi.orgをDNSで引くと、povo2.0のゲートウェイのIPアドレスになっている。

携帯電話の通信事業者は、各携帯電話にグローバルIPアドレスでは無く、プライベートアドレスを割り振っていて、インターネットにはゲートウェイサーバーを経由してアクセスし、携帯電話には直接アクセスできないようになっている。

なので、今まで https://silverfox.noizumi.org/ でインターネットからアクセスできていたのができなくなった。

それではSSLの証明書の更新はどうするのか? と言えば、今まで外からWebにアクセスできるのかで存在チェックしていたのを、DNSでチェックする方式が使えるらしい。

そうすると、次の表示になる。

エックスサーバーにログインして、DNSレコード追加で、次のものを作成。

これで、certbot のPress Enter to Continueでエンターを押すと、DNSをチェックして、SSL証明書を更新してくれる。

あとは、DNSのチャレンジのレコードを削除してもOK。
noizumi.org のDNSを弄れるって事は、silverfox.noizumi.org のドメインの使用者だと分かるので、インターネットから隔絶したサーバーにもSSL証明書が発行できるという事だな。

ひとつ勉強になった 🙂

VPSからメールが届かない

KAGOYA のVPSを契約していて、irc.noizumi.org というホスト名で、IRCdやVPNサーバーを動かしている。

サテライト型のメールサーバーも動かしていて、irc.noizumi.org から、sv13449.xserver.jpへSMTP認証で接続して、わしのメールアカウントでメールを送信するように設定している。

こんな感じでメールを送ると、ログには次のように記録されていて、正常に送信されているようだ。

SPF に +a:irc.niozumi.org と追加して、DMARCのポリシーで reject としていたのをnoneにすると、メールが届いた。

SMTP認証だから、送信元のIPアドレスはSPFでは問われないと思っていたが、メールヘッダの Received: の最初に Postfix とかが入ってると、スマートホストに接続したクライアントのIPアドレスチェックするのかな?

こんな風に家からメールサーバーに接続して自分宛に送信したものは、SPFチェックがなく、DKIMの署名のみで、irc.noizumi.org から送信した場合は、SPFチェックがあり、スマートホストによるDKIMの署名が行われない。

そう言えば、会社の請求書発行してるマシンのメール送信もサテライト型で、プロバイダのメールサーバをスマートホストにしてるけど、会社の固定IPアドレスをSPFレコードに追加しないと迷惑メール排除で弾かれてたな。

CloudSecure WP Securityを入れてみた

エックスサーバーから、これからのWordPress簡単インストールにCloudSecure WP Security が自動的に入ると案内があった。

既存ユーザーでもプラグインにインストールできるとの事でインストールしてみたが、結構通好みなセキュリティプラグインだな。

今まで、SiteGuard WP Pluginというのを使っていて、ログイン時にひらがなで文字を入れさせるという外人に対する嫌がらせで、かなり効果的な総当りパスワード攻撃対策になっていた。

CloudSecure WP SecurityはGoogle Authenticatorというアプリで1分間有効な認証コードを発行してログインするようになってるので、ログインのし難さではほぼ同等かな?

気になる点は、コメント投稿フォームだが、画像認証が設定できるけど、ひらがなを入力するSiteGuard WP Pluginよりも画像を読み取ってアルファベットを入れるってのは結構ウザいので設定していない。

Akismet(非商用利用は無料)というSPAM防止プラグインだけでどこまで耐えられるかとりあえずは様子見。

Ubuntu 24.04LTSが読み込み専用で起動して困った話

昨年末頃に内蔵ハードディスクがお亡くなりになり、Ubuntuはバックアップから外付けUSB RAID1ハードディスクに復旧して、WindowsはUSBハードディスクにインストールできないので、放置していた。

日曜にふと思い立ち、内蔵ハードディスクにWindows10をインストールし、Windows11 をISOでダウンロードして、マウントし、setup.exe /product server で強制インストールした。

Windows11 を直接インストールをしようとすると、PCが要件に合っていないので、拒否されるが、Windows10環境で、コマンドで先のセットアップを実行すると、要件チェックされないのでインストールできるのだ。

EFIのブートディスクが2つという事になるが、Ubuntuのgrubの起動メニューで、チェインロードにより、UbuntuとWindowsを選択可能にして起動できるようにする。

/etc/default/grub を編集して、GRUB_DISABLE_OS_PROBER=false を有功にし、次のコマンドを実行。

# os-prober
# grub-update

grub menu に Windows bootloader が表示されるようになった。

で、Ubuntu にて Windows 11のHDDをマウントしようとしたら、マウントできない。

Webで調べると、Windows11で高速スタートアップが有功になっていて、ディスクにゴミがある状態な為、マウントできないとの事。

ユーティリティの「ディスク」を使って、/dev/sda3 の「マウントオプションを編集……」で、「ユーザーセッションデフォルト」をOFFにしてやるとよいらしい。

そうすると、マウントはできるようにはなったのだが、ファイルをコピーしようと思ったらできない 🙁

再起動して Windows11のコントロールパネルで、高速スタートアップを無効化し、いざ、Ubuntuを起動すると、Failed to start: gdm.service とか出て起動しない。

Ctrl+Alt+F3 で端末ログインして、mount を見てみると、ルートFSが読み込み専用になってる。

こういう場合は、ディスク異常とかが定番だが、fsck しても異常なし。
/etc/fstab を見ると、さっき指定した /dev/sda3 のマウント定義が追加されているのだが、ルートのドライブ指定が消えている 🙁

そりゃ、fstab で起動ディスクの設定消えとったら、起動ディスクが read-only でマウントされて、read-write で remount されないから、読み込み専用のままだよなあ。

# mount -o rw,remount / を実行して、/etc/fstab にルートのファイルシステムの定義を追加して復旧。

何で起動ディスクの設定が消えたのかさっぱりわからんけど、かなり初見殺しなOSですな 🙂

IPAからご連絡

会社が運営してるサイトに「クロスサイトスクリプティングできるよ」ってIPAから連絡があった。

検索キーワードに「<script>alert(1)</script>」とか入れて、反応したらアウトってやつで、運営サイトは前任者が作ったもので、ブラウザでソース見たら、パスワードが見えるとか、ちょっとセキュリティに関しては甘かった。

サイト表示する時に、タグで使う<>とかを&lt;&gt;って変換して表示するのがお約束なのだが、初歩の初歩だから忘れないで欲しいな 🙁

IPAって組織があって、協力者が不具合を見つけて報告し、攻撃者の被害を未然に防いでくれる仕組みだけど、有り難いのう。

これなんかは、IPAに報告した方が良かったな。

SSL証明書の期限切れ警告

Let’s encryptからSSL証明書期限切れの警告メールが来た。
家のサーバーのSSLの証明書は cron で自動的に更新するようになっているのだが、2月の初旬に切れるようだ。

サーバーにログインして調べてみると、名前が引けないので、bind9のdaemonをリスタート。

# systemctl restart bind9.service

そして、SSLの証明書更新。
# certbot renew

これで解決。相当長期間名前が引けない状態だったみたい。

最近、プロバイダのDNSでは、特定サイトの名前解決ができないとか、制限を掛けていたりするので、家のサーバーはDNSのルートサーバーから直接情報を得て無制限に使えるようにしてるんだな。