V-antena and Tanimoto's page

谷本の備忘録・雑記帳・work

>

月: 2021年3月

MONTHLY ARCHIVE

PならばQの確認方法

P1, P2,,,Pn の条件の時に、Q1 or Q2 or... or Qm が成立しているかを確認する方法

P1,P2,,,Pn -> Q1 or Q2 or    or Qm
<=>
P1&P2&  &Pn -> Q1 or Q2 or   or Qm
<=>
not(P1&P2&  &Pn ) or ( Q1 or Q2 or   or Qm) = true
<=>
(P1&P2&  &Pn ) & not (Q1 or Q2 or   or Qm) = false
<=>
P1&P2&  &Pn & not(Q1) & not (Q2) & & not(Qm) = false

従て、P1,P2,,,Pn -> Q1 or Q2 or or Qm が正しいかどうかは
P1&P2& &Pn & not(Q1) & not (Q2) & & not(Qm) = falseかどうかをチェック
すればよい

地球外知的生命体が地球に来るとしたらどういう場合か

地球外知的生命体が地球にくるとしたらその背景と可能性を考えてみた。 なお、太陽系内にはいなそうなので太陽系外と同一と考える。

1.相対性理論の要請から、ともかく遠いし時間がかかる。

2.地球の回転速度の20倍でも光速の0.1%
  従って、20光年以内にあったとしても2000年かかる
  片道1万年かかると思わなければならない
  加速だけではなく減速にも燃料がいるし時間がかかる。

3.恒星間飛行が可能な知的生命体になるには、水・大陸・酸素は
  必要そう。また、エネルギー源は安定性から光になりそう。

4.1の事から、バクテリアや岩石内バクテリアや真菌的なものを載せた
  ロケットを載せるぐらいか、その恒星系に重大なモンダイが予見される
  場合しか知的生命体が飛び出すことは考えられない。

5.従って、どこかへの移住できればという目的しかない。1の事から
  岩石系惑星か衛星、出来ればハビタブルゾーンが見つかればそこに
  移住を決める。いくつかも試せれない。 しかも何十、何百世代
  かかって着いた。  その間のエネルギーをどう持たせるかかと
  いうのもある。

6.食料は、人工のものか家畜や野菜を積んでいると思われる。

7.どこの惑星・衛星が良いかになる。太陽系では、地球か火星か
  月ぐらいが候補となると思われる。
  第一段階は、エンケラドスで水(氷)の確保
  (核融合、及びロケットエンジンの燃料用として)

8.その後、静止衛星の2~3倍の距離のところで周回軌道にのる

9.武器・人間を攻撃、その際、他の生物ごとでも可。
  テラフォーミング的な事を行うので水さえ確保できれば、
  例えば、小惑星をぶつけるのもあり

10.減速・加速も大変なので、良い惑星があるかどうか観測可能か?
   あるいは通り過ぎて戻ってくるか

11.一番ありそうなのは、電波でやり取りするくらい

12.量子テレポーションは難しそうなので、3Dプリンターを利用して
   バクテリアかマイクロロボットを送りこむ。
   あるいはコンピュータをハッキングして侵略(文明・文化のみを
   伝播)

13.進数?で、数、数字、何進法かを教えあう。次に2値画像を送る。
   文字を送る。自然単語を送る
   いくつかの動詞を送る。

   ここからが大変かも

14.コンピュータ上に意識を載せたもの、あるいは、生命の合成に成功して
   コンピュータにその生成方法を載せて恒星間飛行をする。
   カタパルトで発進する。加速度を大きくできる。それでもせいぜい
   0.0001Cぐらいの速度なので、20万年ぐらいかかる。

メールサーバー構築 その2(暫定)

LAN内専用のメールサーバーは構築していたが、LAN外からメールを受信できれば、用途が広がる。
そこで、sslをサポートし、また帰宅後も再度PCでメールを見れるようにIMAP形式のメールサーバーを構築する。  なお、外部からメール受信には外部メールサービスを使うpush方式と、自ら見に行くpull方式があるが、まずはpull方式とした(gmailサーバー等をリレーしない)

※まだ、おかしいところがあるかも。いったんメモとして公開する。

構築イメージ

参考としたサイト

How to set up a mail server on your Raspberry Pi?

 (Roundcubeを使う部分は実装せずにすました。 また、ENNABLE IMAPSの箇所で一部設定変更)

OpenSSL で SSL 自己証明書を発行する手順
先の参考サイトではdovecot.pemを使うとなっていたが、それだとエラーになったため。自己証明書ではなく本当はletsencryptを使うのが良いが、別のサーバーでテストしていたため自己証明書で行った。 

インストールとテンプレート準備

sudo apt install postfix
sudo nano /etc/postfix/main.cf
sudo apt install mailutils
sudo apt install dovecot-imapd

sudo maildirmake.dovecot /etc/skel/Maildir
sudo maildirmake.dovecot /etc/skel/Maildir/.Drafts
sudo maildirmake.dovecot /etc/skel/Maildir/.Sent
sudo maildirmake.dovecot /etc/skel/Maildir/.Spam
sudo maildirmake.dovecot /etc/skel/Maildir/.Trash
sudo maildirmake.dovecot /etc/skel/Maildir/.Templates

ssl用自己証明書作成

makedir ssls
sudo openssl genrsa 4096 > ssls/server.key
openssl req -new -key ssls/server.key > ssls/server.csr
openssl x509 -req -days 365 -signkey ssls/server.key < ssls/server.csr >ssls/server.crt

3つ目のserver.csrを作成するところで出てくる質問には例えば以下の様に答える
JP
都道府県名
区名/市名/郡名 など
組織名等
  単に改行
ドメイン名(例: example.com)
その後の質問は改行でかまわない

場所移動
sudo cp ssls/* /etc/dovecot/private

postfixの設定

ポート番号の設定、ドメイン名の設定、ネットワークの指定等を行う

sudo nano /etc/postfix/main.cf
myhostname = example.com
mydomain = example.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
inet_protocols = ipv4
home_mailbox = Maildir/

#  以下追加
mailbox_command =
smtpd_helo_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_invalid_helo_hostname,
        reject_non_fqdn_helo_hostname,
        reject_unknown_helo_hostname,
        check_helo_access hash:/etc/postfix/helo_access
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

sudo nano /etc/postfix/helo_access
aaa.bb.cc.ddd  REJECT        # aaa.bb.cc.ddd はexample.comのIPアドレス
# example.com   REJECT
smtp.example.com   REJECT
mail.example.com   REJECT
sudo nano /etc/postfix/master.cf
587      inet  n       -       y       -       -       smtpd     #smtpを587にした

sudo service postfix restart で、postfixを起動

dovecotの設定

sudo nano /etc/dovecot/dovecot.conf
listen = *
sudo nano /etc/dovecot/conf.d/10-mail.conf
mail_location = ~/Maildir
sudo nano /etc/dovecot/conf.d/10-master.conf
service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }

service auth {
        unix_listener /var/spool/postfix/private/auth {
                mode = 0660
                user = postfix
                group = postfix
        }
}
sudo nano /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
sudo nano /etc/dovecot/conf.d/10-ssl.conf

ssl = yes
ssl_cert = </etc/dovecot/private/server.crt
ssl_key = </etc/dovecot/private/server.key
ssl_min_protocols = TLSv1.2

ssl = yes

ssl_cert = </etc/dovecot/dovecot.pem       #  private/ を消すことに注意
ssl_key = </etc/dovecot/private/dovecot.pem  # .keyを.pemにすることに注意

ssl_min_protocols = TLSv1.2

sudo service dovecot restart でdovecotを再起動

自分証明書だとおこられるかも。letsencryptので行う必要ありか。

テスト及び実行

sudo adduser testuser

※ 下記部分は「自己証明書作成」部分を行った場合は不要

printf '\0%s\0%s' 'testuser' 'password' | openssl base64
cd /etc/dovecot
sudo openssl req -new -x509 -nodes -config /usr/share/dovecot/dovecot-openssl.cnf -out dovecot.pem -keyout private/dovecot.pem -days 365

メーラー側の設定

protocol imap4
smtp認証 しない
ssl imap4 sslを使用
smtp sslを使用しない
smtp ポート番号 587
IMAP ポート番号 993
コードはutf-8にする。(文字化けするので) 2021/3/31追記

自己証明書なので信頼できないといわれるが、許可して受け入れると受信可能となる。

※ smtp側を開けていないとほとんどのメーラが使えない。 windowsだとSylpheedは使えた。 androidだとOpen Mailが使えた(おそらくK-9 Mailも)。 2021/3/31 追記

その他エラー対策

/var/log/mail.err や /var/log/syslogにエラーが出ているのでうまくいかないとき、コマンドでの直接のエラーメッセージの他にここをみてチェック

もし、 key too smallの様なメッセージが出た場合は /etc/ssl/openssl.cnf 中の
CipherString = DEFAULT@SECLEVEL=2 の値を1にしてみる

もし、 /dev/urandomでエラーになった場合は、 /usr/share/dovecot/dovecot-openssl.cnf 中のRANDFILE = /dev/urandom部分をコメントアウトしてみる。 ついでにkey長を4096にするのが良い

syslogに大量のsystemd-udevd chmod 0666 failed with exit code 1

トラブル

使用しているubuntuで/var/log/syslogを覗いたところ、大量かつ頻繁に
systemd-udevd[24420]: Process '/bin/chmod 0666 ' failed with exit code 1.
と、いったかんじのエラーが出ていた。

調べたところ

systemd-udevdが出てくることから、 /etc/udev/rules.d/ 内の設定ファイルが関係しているのではと疑った。 そのディレクトリーの中のファイルで /bin/chmod 0666 があるのは、、/etc/udev/rules.d/99-sbig.rules だけであった。そのファイルの中に

# SBIG ST-L cameras
SUBSYSTEM=="usb", ACTION=="add", SYSFS{idVendor}=="0d97", SYSFS{idProduct}=="0002" , ENV{DEVTYPE}="usb_device", \
RUN+="/sbin/fxload -I /lib/firmware/sbiglcam.hex -D $env{DEVNAME}"
RUN+="/bin/chmod 0666 $env{DEVNAME}"

# SBIG ST-402/1603/3200 cameras
SUBSYSTEM=="usb", ACTION=="add", SYSFS{idVendor}=="0d97", SYSFS{idProduct}=="0003" , ENV{DEVTYPE}="usb_device", \
RUN+="/sbin/fxload -I /lib/firmware/sbigfcam.hex -D $env{DEVNAME}"
RUN+="/bin/chmod 0666 $env{DEVNAME}"

と、いったコードがあった。 
USB ID DAtabase (the sz development) のサイトでidVendorとidProductから調べると、

0x0D97 Santa Barbara Instrument Group (SBIG)
0x0001 SBIG Astronomy Camera (without firmware)

であった。puroduct id=2,3についてはわからず。 

work around

対処方法がわからなかったが(何か月か前に接続した激安カメラが関係か?)、相当しそうなものは接続していないので、ファイルを消して見ることにした。 syslogにfailedメッセージを吐くことは止まった。 副作用がないかどうかは不明だが、特に問題なく動いてそう。

sudo mv /etc/udev/rules.d/99-sbig.rules  /etc/udev/rules.d/99-sbig.rulesbk

HDD起動にしたraspiでsudoが効かなくなった

Raspberry pi 2B v1.1で、SDHCでブートし、以降HDDを使う設定にしたが、何かの拍子で(おそらくrebootで)sudoが無効になってしまった。 例えば、sudoで行っているのに読み込み専用ファイルですとかのエラーが出る。

対応

sudo mount -o remount,rw /  を実行すると、(一部エラーの表示がでるが)復活した。

SDHCで立ち上がっている?

※ /etc/rc.localに記述してもダメ
 また、systemctl --failed で見てみると、xrdpやpostfix, dovecot 他 が立ち上がっていない。
 /etc/fstabに書いたがそこが読まれなかったのか?

V-antena and Tanimoto's page