ホーム » コンピュータ » Linux (ページ 16)

Linux」カテゴリーアーカイブ

システム

最近の投稿

  • この一週間の必需品
    6/22頃からの風邪の症状。鼻水と喉の痛みがあって、鼻スプレーと喉スプレーでだましだましの2週間。 […]
  • あづぃ…
    2F廊下温度35℃、WBGT30℃越え。 […]
  • gemini-cli 便利
    Gemini をコマンドラインから使えるツール gemini-cli が公開されている。 […]
  • LINE bot が動いていない… 月当たり最大数オーバー
    我が家では、以前より 自宅専用の LINE bot を動かしていて、サーバからの通知に使っていた。 […]
  • rkhunter の設定
    卒研のセキュリティの説明の中で rkhunter を紹介。説明してたら、自宅サーバにはサーバ機以降後に […]

アーカイブ

カテゴリー

自宅メールサーバをDKIM対応へ

Yahoo のメールアカウントに、迷惑メール対策のため「DMARC」導入を開始しますとのメールが届いている。送信側ドメイン認証のひとつで、なりすましだった場合の取り扱いを設定することができるらしい。

しかし、自宅メールサーバは、mydns.jp を用いたダイナミックDNSを用いたサイト。このため、メールサーバを立ち上げても spam 送信元と誤認(なりすましと誤認)される可能性も高く、自宅サーバからのメールは、受け取り側で迷惑メールフォルダに落ちないか心配したり、すぐに相手に届くか不安であった。

ということで、DMARC の前に、DKIM にて信用してもらえるように設定を行う。DKIMは受信したメールが正しいメールサーバから送られ改ざんされていないか確認する方式SPFは以前に導入済みだけど、正しいメールサーバから発信されたか確認する方式なので、DKIM ほどの信頼はない。

opendkim のインストール

Debian では、opendkim のパッケージが配布されているので必要なパッケージをインストールする。設定のために セレクタ名 を postfix としてプライベートキーを生成する。/etc/dkimkeys/postfix.txt には、DNS に登録する “IN TXT” の設定が生成される。

$ sudo aptitude install opendkim opendkim-tools
$ cd /etc/dkimkeys
$ sudo opendkim-genkey -D /etc/dkimkeys -b 1024 -d tsaitoh.net -s postfix
$ sudo chown opendkim:opendkim /etc/dkimkeys/*

opendkim の設定として、上記処理で作られたプライベートキーを登録し、DKIM キーを付加する処理のためのサーバと接続するためのソケットを定義する。

((( 以下のファイルを編集 )))
$ sudo vi /etc/opendkim.conf
Domain   tsaitoh.net
KeyFile  /etc/dkimkeys/postfix.private
Selector postfix

Socket   inet:8892@localhost

DKIM 電子署名を付加するための postifix の設定

postfix でメールを送信する時に opendkim に接続し DKIM の電子署名を付加するために、前述のソケットに対応する設定を以下の様に記載する。

((( /etc/postfix/main.cf )))
$ sudo vi /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:8892

DKIM のための DNS の設定

DNSに、公開鍵などの設定を行う。mydns.jp を使っているので、mydns.jp にログインし、DOMAIN INFO にて、以下の設定を加える。

_adsp._domainkey   IN TXT dkim=unknown
postfix._domainkey IN TXT v=DKIM1; h=sha256; k=rsa; p=XXX...XXX

DNS設定が正しく反映されているか確認。

$ nslookup -query=TXT _adsp._domainkey.tsaitoh.net 8.8.8.8
_adsp._domainkey.tsaitoh.net    text = "dkim=unknown"
$ nslookup -query=TXT postfix._domainkey.tsaitoh.net 8.8.8.8
postfix._domainkey.tsaitoh.net  text = "v=DKIM1; h=sha256; k=rsa; p=XXX...XXX

サーバの再起動とDKIMの確認

$ sudo service opendkim start
$ sudo service postfix restart

試しに Google のアカウントにメールを送ったら、メールヘッダに以下が表示されるようになった。SPF は、以前に設定済みなので、自宅サーバからのメールは、確実に相手に届くようになったと思われる。

ARC-Authentication-Results: i=1; mx.google.com;
        dkim=pass header.i=@tsaitoh.net ....
        spf=pass (google.com: domain of ....

ラズパイのインタフェース名

自宅の raspberry-pi の設定を触っていて、何気に raspi-config を起動して設定を確認していたら、適当にポチポチさわってて、Network Options, N3 Network Interface Names の設定を触ったようで、再起動がかかったらネットワークがつながらない。

しかたがないので USBキーボードとHDMI のモニタつなげて、直接設定を触ろうとするものの、HDMI に信号が出てこない。

これでは、設定を触ろうにも何もできない。

raspi-config を使わないで設定を変更

もう raspberry-pi 単独では触りようがないので、micro-SD を外して、母艦のサーバで 起動時の設定を触ることとした。

間違って触った Network Interface Names は、古い eth0 などのインタフェース名でなく、enx112233aabbcc みたいな MAC アドレス を交えた新しいインタフェース名を使うような設定(predictable interface naming)。この機能が動き出したおかげで、インタフェースの初期化に失敗している。この設定を戻さないと。

$ sudo bash
((( raspberry-piの/bootフォルダをマウント )))
# mount -t vfat /dev/sdd1 /mnt  デバイス名/sddの部分は要変更

((( predictable interface naming を無効化 )))
# vi /mnt/cmdline.txt
net.ifnames=0  ファイル末尾に追加

((( sshサーバ機能を有効化 ))) 
# touch /mnt/ssh

((( HDMI の出力を有効化 )))
# vi /mnt/config.txt
hdmi_safe=1    先頭の方のこの行をコメントアウト
               低解像度のsafeモードでHDMIを設定

# umount /mnt
((( raspberry-piのrootをマウント )))
# mount -t ext4 /dev/sdd2 /mnt
((( ネットワークの設定ファイルを変更 )))
# vi /mnt/etc/dhcpcd.conf
...

んで、母艦で編集していた micro-SD を raspberry-pi に差し戻して起動。

Raspberry-Pi のファーム壊れた

Raspberry-Pi、ネットワーク越しに rpi-update してた途中でWiFi中継器のネットワークが切れてしまった。おかげでファームウェアの更新に失敗。どうもファームウェアがぶっ飛んだようで、起動しなくなった。タイミング最悪。

その RPi は、ITオンチな1F両親向けに、家族の予定をLED掲示板に表示させてるために使ってた。でも、買い替えるといっても RPi4 買うほどの処理じゃないしな。

難しい話抜きで、Google Nest 買った方が便利かな。でも、OK,Google、使いこなせないだろうしなぁ…

サーバの電源トラブル

朝、UPS がピーピー鳴って、サーバの電源が落ちた。

電子レンジにコーヒーサーバが重なると、ブレーカーが落ちる前に UPS が反応することがある。

我が家では、サーバが DHCP サーバとなっているから、ルータなどが生きていても、ネットワークが一切使えなくなる。

UPS の劣化などを疑うけど、更新は2017年1月なので、バッテリー状態も最悪なほどでもないはず。

apcupsdによる電源停止は正しく動作

UPS が再び正常に通電できるまで、少し手間取ったけど、復旧後に状態を確認。サーバが死ぬ前にシャットダウンを開始し、正常に電源停止が出来ている。

# grep apcupsd /var/log/syslog
Jan 11 08:59:30 perrine apcupsd[823]: Power failure.
Jan 11 08:59:36 perrine apcupsd[823]: Running on UPS batteries.
Jan 11 08:59:42 perrine apcupsd[823]: Reached run time limit on batteries.
Jan 11 08:59:42 perrine apcupsd[823]: Initiating system shutdown!
Jan 11 08:59:42 perrine apcupsd[823]: apcupsd exiting, signal 15

apcupsd-cgi をインストール

UPS の状態を確認するが、電源電圧が朝の起床に合わせて95[V]を下回っている

しかし、munin では、サンプリング感覚が5分なので、落ちる瞬間にどういう状態になっているのか確認したい。ひとまず、apcupsd を CGI から表示するパッケージが出ているので、それをインストール。

apcupsd/apccontrol

apcupsd の設定ファイルを見ていると、/etc/apcupsd/apccontrol というスクリプトから、状態に応じて様々な警告が出ている。電源が UPS の電源に切り替わる時には onbattery スクリプトから、管理者宛にメールを出している。改めてメールを確認すると、

perrine UPS perrine Power Failure !!!
 
DATE     : 2020-01-11 08:59:35 +0900  
HOSTNAME : perrine
VERSION  : 3.14.14 (31 May 2016) debian
UPSNAME  : perrine
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2019-12-30 16:18:32 +0900  
MODEL    : APC ES 550G 
STATUS   : ONBATT 
LINEV    : 88.0 Volts
LOADPCT  : 23.0 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 19.7 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 5 Seconds
SENSE    : Low

落ちる瞬間の電圧は、88[V] 。ちょうど、ママの朝トーストとバリスタのスイッチを入れていたあたりだな。

どちらにしろ、onbattery スクリプト起動から、killpower 開始まで若干の15秒ほどの時間があるし、メールだけでなく google-home-notifier を使って、電源異常を喋らせるようにしてみた。

我が家のWiFi機器の登録

子どもに「ネットワーク機器」が新たに届く。そろそろ、専門用語も通じる様になってきたので、セットアップ方法を伝授。

普通の家なら、WiFiルータのAOSSのボタンを押して…と言うところだろうが、我が家はネットワークの登録は手作業。

(1) ルータの設定画面 http://192.168.11.1 に接続し、login: admin , password: ●●●
(2) 詳細設定→無線設定→MACアクセス制限
(3) 登録リストの編集で、登録リストの新規追加

普通の家なら、WiFiルータで DHCP サーバ機能(プライベートアドレスの貸し出し機能)が動いているので、これで終わり。

ただし、我が家では、ネットワーク機器の稼働状況を管理するために、

(4) 固定IPアドレスを割り振るために DHCP サーバへの登録、/etc/dhcp/dhcpd.conf の編集
(5) IPアドレスを名前で呼び出せるようにするための DNS サーバへの登録 /etc/db.xxxx の編集
(6) 登録されていない MAC アドレス機器を監視するために、監視対象から外すための /etc/arpalert/maclist.allow への追記
(7) その他にも hosts への追記、Samba のための lmhosts への追記

と、面倒な設定が必要。これを全部管理するのは大変なので、これらの管理の自動化を行うプログラムが作ってあるので、その設定ファイルに、機器の ホスト名・IPアドレス・MACアドレスを記載すればいい。

詳細は、各設定ファイル内のテンプレート部に併記してあるコメントを参照。

EdgeRouter-X ver 2.0.8 に更新

12/5 に、EdgeRouter-X のファームウェア 2.0.8 が公開されたみたい。さっそく適用。

といっても、何が変わったかしらんけど。(^_^;

zsh の設定調整

macOSの標準シェルがzshになって、Linux環境にもzshを入れて使い始めたけど、時々予想外の動きをしてくれた。

リモートのファイルをscpでコピーしようと “scp remote:*.c .”みたいなことをしたら、no match*.c みたいなエラー。ワイルドカード展開のタイミングが bash などと違うみたい。

逆に、リモートホスト名が書いてある状態だと、ファイル名補完でリモートに接続しようとして待ちが発生して使い勝手も悪くなるといった情報もある。

そこで、上記2つの問題に対応するために、.zshrc に以下の内容を追加。

PROMPT="%F{cyan}[%n@%m %1~]%(#.#.$)%f "
setopt nonomatch
zstyle ':completion:*:complete:scp:*:files' command command -

macOS Catalina と zsh

macOS Catalina(10.15)

基本ファイルシステムがリードオンリーになるとか、システムの変更がいつもになく危険そうでアップデートを躊躇っていた、macOS Catalina だけど、人柱の方々の撃沈のネタもなく、ようやく Catalina を入れてみた。

でも、心配だった割には、特に重大なトラブルもなく、インストールは終わった。

この後、Macports なども更新を行った。一部、ossp-uuid のパッケージが不具合を発生して、”sudo port clean ossp-uuid” を実行した程度。

Debian環境も zsh に移行

インストールも無事に終わったけど、Catalina からは標準 shell が zsh に変更になった。そこで、身の回りの Debian の環境でも zsh を入れてみた。

ただ、インストールしようとすると、zsh-static という動的リンクをしないパッケージもある。

システムの動的リンクライブラリが異常になっても動くようにということだろう。そこで admin では、zsh-static を使うようにしておいた。

$ sudo aptitude install zsh zsh-static
$ chsh -s /bin/zsh
$ sudo chsh -s /bin/zsh-static root

OpenHAB2 のインストール

SiriやGoogle home との相性を考え、家電制御のために、openhab2 をインストール

OpenHabのリポジトリ登録

$ wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' \
  | sudo apt-key add -
$ sudo apt-get install apt-transport-https
$ echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' \
  | sudo tee /etc/apt/sources.list.d/openhab2.list
$ sudo apt-get update 

OpenHabのインストール

$ sudo aptitude install openhab2
$ sudo systemctl daemon-reload
$ sudo systemctl enable openhab2.service

Java環境の設定

上記の設定で、openhub2 のインストールは終わったけど、”systemctl start openhab2.service”を実行しても動いてくれない。起動スクリプトのための設定が必要。

(( /etc/default/openhab2 ))
:
OPENHAB_HTTP_PORT=8080
OPENHAB_HTTP_ADDRESS=192.168.xxx.0
:

相変わらず動かないけど、/var/log/opehhab2/openhab.log を見ると、Java のエラーが出ている。改めて確認すると、java のバージョンが java-8 で、9以降だと動かないみたい。改めて openjdk-8 をインストールし、systemdの設定で JAVA_HOME を指定するように変更。

$ sudo aptitude search openjdk-8 openjdk-8-jdk-headless
$ sudo vi /usr/lib/systemd/system/openhab2.service

(( /usr/lib/systemd/system/openhab2.service ))
:
[Service]
Environment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
:

$ sudo systemctl start openhab2.service

 

ブラウザで http://192.168.xx.xx:8080 で開いて、無事起動していることが確認できた。

起床用の照明制御

寝室の蛍光灯がつかなくなって、交換しようとしたらプラスチック劣化で部品が壊れた。他の照明もLEDに切り替えてきたので、これを契機に寝室もLED照明に取り換えた。

リモコン制御でめざまし

赤外線リモコンが目の前に増えると、早々にリモコン制御に登録。以前の蛍光灯もリモコンついていたけど、感度が悪くて制御しづらかったけど、新しいリモコンは感度よく、うまく制御できる。しかも、ON/OFFを交互にしか制御できないトグル型だと、つけたのか消したのかが区別できないけど、新しいリモコンは全点灯と常夜灯のボタンがOFF状態でも使える。

ということで、先日ママが寝坊して「5分で出社」という荒業を使っていたので、平日朝に徐々に明るく点灯させてみる。
# 朝イチに明るさ30%点灯、30分後に全点灯&オフタイマーで1時間後に消灯。

設定初日は、crontab の書き間違いで失敗したけど、明日からは大丈夫だろう。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト