Blog

  • WSLを使ってメーリングリストを作成(番外編2)

     しばらく運用して問題点が出てきたので解決する。

    1. サブドメインから送ったメールがAuthentication-Resultsセクションでdkim-adsp=noneとなる。
    2. 毎日06:30ごろにroot宛にCronのエラーメールが来る。
    3. リンゴの絵がついた携帯から投稿すると文字化けして配送される。

    1.サブドメインから送ったメールがAuthentication-Resultsセクションでdkim-adsp=noneとなる

     サブドメインml.mydomain.comにspfとdkimが必要らしい。以下のサブドメインに対してそれぞれ設定を行う。

    mail.mydomain.com
    ml.mydomain.com

    ・サブドメインにSPFレコードを追加する

    TXT,mail.mydomain.com v=spf1 include:mydomain.com -all
    

    ・Amazon SESでサブドメインにDKIMを追加する

    Amazon SESコンソールを開く
    Configurationの下のVerified identitiesをクリック
    Create identityを押す、identity typeのDomainをチェック
    Domainにサブドメイン名を入力 mail.mydomain.com
        Assign a default configuration set: off
        Use a custom MAIL FROM domain: off
    Create identifyを押す
    作成されたLegacy TXT RecordsとPublish DNS recordsをDNSに追加する
    
    TXT,_amazonses.mail.mydomain.com,xxxxx
    TXT,mail.mydomain.com,amazonses:xxxxx
    CNAME,xxx._domainkey.mail.mydomain.com,xxx.dkim.amazonses.com
    CNAME,yyy._domainkey.mail.mydomain.com,yyy.dkim.amazonses.com
    CNAME,zzz._domainkey.mail.mydomain.com,zzz.dkim.amazonses.com

     しばらくしてAWS側の検証が完了すると、DKIM setup SUCCESS for ドメイン という件名のメールがAWSアカウント宛に届く

    これでdkim-adsp=passとなっているはずなので、サブドメインからメールを送って確認する。

    ・元のドメインのDKIMを見てみるとキー長が1024ビットだったので2048ビットに変えておく。

    SESではキー長を変更する場合には以下の制限があるらしい

    ・同じ長さには変えられない
    ・24時間内に別のキー長に2回以上変えられない(その期間の最初のダウングレードを除く)

    キー長の変更手順

    Amazon SESコンソールを開く
    Configurationの下のVerified identitiesをクリック
    対象のアイテム(ドメイン)をクリックする
    AuthenticationタブのDomainKeys Identified Mail (DKIM)にあるEditを押す
    DKIM signing key lengthの RSA_2048_BIT か RSA_1024_BIT を選ぶ
    Save changesを押す
    次に送られるメールからは、キー長が変わるらしい。

    ・追加したサブドメインにバウンス対応用のSNS通知を設定しておく

    2.毎日06:30ごろにroot宛にCronのエラーメールが来る

    Cron <root@xxxx> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
    
      /etc/cron.daily/logrotate:
      invoke-rc.d: could not determine current runlevel

    WSLではinvoke-rc.dはエラーとなるが、誰かが動かそうとしているらしい。

    実行階層の解析
    /etc/crontab: ( cd / && run-parts --report /etc/cron.daily )
     /etc/cron.dairy/logrotate
      /usr/sbin/logrotate /etc/logrotate.conf: include /etc/logrotate.d
       /etc/logrotate.d/rsyslog
        /usr/lib/rsyslog/rsysrog-rotate
         invoke-rc.d rsyslog rotate > /dev/null

    rsysrog-rotate内でinvoke-rc.d が実行されていた。

    invoke-rc.d rsyslog rotate > /dev/null

    rsysrog-rotateファイルを書き換える。

    $ sudo vi /usr/lib/rsyslog/rsysrog-rotate
    invoke-rc.d rsyslog rotate > /dev/null
       ↓
    /etc/init.d/rsyslog rotate > /dev/null

    リンゴの絵がついた携帯から投稿すると文字化けして配送される

    届いたメールのヘッダーにによるとutf-8エンコードされた後にbase64エンコードされている。

    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: base64

    mailmanがbase64デコードをせずに、base64エンコードされた文字列をそのままutf-8として解釈して転送しているので文字化けしているのかもしれない。

    以下のサイトにあるbase64デコードフィルターを追加することにした。

    https://yamagata.int21h.jp/tool/gmail-filter/

    上記サイトの内容でスクリプトファイルを作成する。先頭行は環境に合わせて書き換える。

    $ sudo vi /usr/local/bin/base64-filter.pl
      #!/usr/bin/perl
        ...
    $ sudo chomd +x /usr/local/bin/base64-filter.pl
    

    postfix用のaliasesファイルですべてのメーリングリスト名の行を書き換える。

    $ sudo vi /var/lib/mailman/data/aliases
      mailman:             "|/var/lib/mailman/mail/mailman post mailman"
        ↓
      mailman:             "|/usr/local/bin/base64-filter.pl |/var/lib/mailman/mail/mailman post mailman"
    $ sudo newaliases

    aliasデータベースを更新するのを忘れずに。

    $ sudo newaliases

    注意点として、メーリングリストの追加・削除や手動で/usr/lib/mailman/bin/genaliasesを実行したときには、このファイルが更新され、フィルターの記述が消えるので、都度編集する必要がある。

  • ニワトコのタッチペン

     映画CODAを見に行った時に購入したニワトコの杖の先に、スマートフォンで使えるタッチペンの先を付けてみた。

     スマートフォンのデジタイザーは静電容量方式のため、導電性のあるペン先でないと反応できないらしい。

     100円ショップで売っているスマートフォン用のタッチペンを切り取り、ニワトコの杖の先にテープで張り付ける。

     しかし、それだけではスマートフォンが反応しないので、ペン先の内部にある金属部分から手元の握る部分まで、はんだ付け用の細い銅線を引っ張ってきて透明なテープで止めてある。本当は内部に通したかったけれど仕方がない、

     これによって生体電流を手のひらからペン先まで流すことができるようだ。もともと、ペン先の金属と指が接触しているわけではないので、ペン先の金属とは直接繋がなくても近づけておけば大丈夫みたい。