2022年8月12日金曜日

ASAHIネットのメールサーバをFreeBSDサーバから利用

 

作成中

  1.  packageをインストール

    SASL対応のために、ports/pkgのsendmailをインストール

    SSL/TLS通信のために、stunnelをインストール(sendmail.mcの記述でsendmailが直接できるかもしれないが、試していない)

     

    1. stunnelの設定
      1. /usr/local/etc/stunnel/stunnel.conf に以下を追加
    [asahi-net-smtp]
    client = yes
    accept = 127.0.0.1:465
    connect = mail.asahi-net.or.jp:465
    verifyChain = yes
    CApath = /etc/ssl/certs
    checkHost = mail.asahi-net.or.jp
    OCSPaia = yes
      1. /etc/rc.conf に追加
    stunnel_enable="YES"

    /usr/local/etc/rc.d/stunnel start
    1. sendmailの設定
      1. /etc/mail/mailer.conf
    #
    #sendmail       /usr/libexec/sendmail/sendmail
    #mailq          /usr/libexec/sendmail/sendmail
    #newaliases     /usr/libexec/sendmail/sendmail
    #hoststat       /usr/libexec/sendmail/sendmail
    #purgestat      /usr/libexec/sendmail/sendmail
    sendmail        /usr/local/sbin/sendmail
    send-mail       /usr/local/sbin/sendmail
    mailq           /usr/local/sbin/sendmail
    newaliases      /usr/local/sbin/sendmail
    hoststat        /usr/local/sbin/sendmail
    purgestat       /usr/local/sbin/sendmail
    1. sendmail.mcの変更
    FEATURE(authinfo, `hash  -o /etc/mail/authinfo')
    define(`SMART_HOST', `asahinet465:localhost')

    ######################################################################
    ### sendgrid587 Mailer Specification                               ###
    ######################################################################
    Masahinet465,   P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP,
                            R=MasqSMTP, E=\r\n, L=2040, T=DNS/RFC822/SMTP,
                            A=TCP $h 465

    make sendmail.cf
      1. /etc/mail/authinfo
    #
    # makemap hash authinfo.db < authinfo
    #
    AuthInfo:localhost.my.domain "U:ASAHI-NETのID" "P:ASAHI-NETのパスワードすべて小文字で" "M:CRAM-MD5"

    AuthInfo:localhost.my.domain "U:zzz-snp" "P:abcd1234" "M:CRAM-MD5"


    makemap hash authinfo.db < authinfo
    chmod go-rwx authinfo*

    /etc/rc.d/sendmail restart



    authinfoのポイント


    パスワードはすべて小文字



    関連リンク


    2021年2月11日木曜日

    My Peugeot is crashed on Google Pixel3 Android 11

    My Peugeot App on Google Pixel3 Android11 is crashed after adding the body number.

    [2021/3/3] After 2021/2/26 update, My Peugeot App was not crashed.


    --------- beginning of crash

    02-11 20:54:31.802 19959 19959 E AndroidRuntime: FATAL EXCEPTION: main

    02-11 20:54:31.802 19959 19959 E AndroidRuntime: Process: com.psa.mym.mypeugeot, PID: 19959

    02-11 20:54:31.802 19959 19959 E AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=1; index=-1

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.psa.mym.activity.dashboard.DashboardTabFragment.initNoTripsBluetoothTutorial(DashboardTabFragment.java:249)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.psa.mym.activity.dashboard.DashboardTabFragment.showEmpty(DashboardTabFragment.java:235)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.psa.mym.activity.dashboard.DashboardTabFragment.initView(DashboardTabFragment.java:322)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.psa.mym.activity.dashboard.DashboardTabFragment.refresh(DashboardTabFragment.java:445)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.psa.mym.activity.dashboard.DashboardTabFragment.onResume(DashboardTabFragment.java:395)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.fragment.app.Fragment.performResume(Fragment.java:2748)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.fragment.app.FragmentStateManager.resume(FragmentStateManager.java:373)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1211)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.performPendingDeferredStart(FragmentManager.java:1123)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.startPendingDeferredFragments(FragmentManager.java:1531)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.doPendingDeferredStart(FragmentManager.java:2299)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1869)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.executePendingTransactions(FragmentManager.java:489)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.commonsware.cwac.pager.v4.ArrayPagerAdapter.finishUpdate(ArrayPagerAdapter.java:156)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.duolingo.open.rtlviewpager.DelegatingPagerAdapter.finishUpdate(DelegatingPagerAdapter.java:61)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.duolingo.open.rtlviewpager.RtlViewPager.onMeasure(RtlViewPager.java:211)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.View.measure(View.java:25466)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:760)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.google.android.material.appbar.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:99)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1892)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:831)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.View.measure(View.java:25466)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.drawerlayout.widget.DrawerLayout.onMeasure(DrawerLayout.java:1119)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.View.measure(View.java:25466)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.View.measure(View.java:25466)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.View.measure(View.java:25466)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.View.measure(View.java:25466)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.View.measure(View.java:25466)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.android.internal.policy.DecorView.onMeasure(DecorView.java:747)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.View.measure(View.java:25466)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3402)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2246)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2504)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1948)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8177)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.Choreographer.doCallbacks(Choreographer.java:796)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.Choreographer.doFrame(Choreographer.java:731)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:938)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:223)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7660)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)

    02-11 20:54:31.802 19959 19959 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)




    2020年2月14日金曜日

    [FreeBSD]GuestOS hung up with HDD IO error on VirtualBox

    When Guest OS system on VirtualBox runs with heavy disk I/O (e.g. upgrade package, apt-get install, etc),  Guest OS hung up with kernel I/O error(AHCI error etc...). But there is no I/O error on HostOS.

    [SOLUTION]
     enabled Use Host I/O Cache
     

    [Related information] (in Japanese)
    Virtual Box truble shoot: The I/O cache encountered an error

    2019年10月16日水曜日

    [FreeBSD]FreeBSD on Oracle Cloud


    CHANGES
    [2019/10/18] add remove host in known_hosts if can't connect console server
    [2019/10/19] I can run FreeBSD-12.1-RC1(created vmdk on VirtualBox) on Oracle Cloud VM.Standard2.1 with **Launch Mode:EMULATED** (not PARAVIRTUALIZED). Maybe also 12.0-RELEASE.

    Q1 console connection with non-default id filename

    I can use the serial console and VNC console.

    If the user uses non-default identity_filename for ssh authentification, you have to use ssh-agent or specify with "-i" option.

    Example1) use ~/.ssh/id_rsa.oracle, ssh-agent and tcsh
    % eval `ssh-agent -c`
    % ssh-add ~/.ssh/id_rsa.oracle
    
    and use cut&paste Connect with SSH from the oracle cloud console
    % ssh -o ProxyCommand='ssh -W %h:%p -p 443 ocid1.instanceconsoleconnection.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@instance-console.ap-tokyo-1.oraclecloud.com' ocid1.instance.oc1.ap-tokyo-1.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    
    Example2) use ~/.ssh/id_rsa.oracle, -i option(you need define -i twice
    % ssh -i ~/.ssh/id_rsa.oracle -o ProxyCommand='ssh -i ~/.ssh/id_rsa.oracle  -W %h:%p -p 443 ocid1.instanceconsoleconnection.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@instance-console.ap-tokyo-1.oraclecloud.com' ocid1.instance.oc1.ap-tokyo-1.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
    
    If you connect ssh connection with below error,
    Permission denied (publickey).
    ssh_exchange_identification: Connection closed by remote host
    
    Remove the oracle cloud host from ~/.ssh/known_hosts.

    
    

    Q2 which Virtual-Image, we can use for FreeBSD[Oct/16/2019].

    I tried FreeBSD-12.0-RELEASE-amd64.vmdk on VM.Standard2.1, I missed with this dmesgs [NG].
    Currently, I'm trying FreeBSD-12.0-RELEASE-amd64.qcow2.
    (Finally, I want to use FreeBSD on VM.Standard.E2.1.Micro as Always Free. But currently out of host capacity at Japan/East(Tokyo) Region. So I use VM.Standard2.1)

    Q3 How to create custom boot image(what is OBJECT STORAGE URL)


    After uploading Virtual Image to Object Storage/Bucket and creating a pre-authenticated request. you can get OBJECT STORAGE URL from Objects->View Object Details(1st one)


    2019年8月30日金曜日

    YouTubeの一週間毎のDreams Come Trueのビデオ再生回数推移グラフ

    毎週月曜日の0時(日本時間)にYouTube APIを使ってDreams Come Trueのコンテンツの再生回数をグラフにしています。当初はこのYouTubeの再生回数からWONDERLAND 2019の決まればと思っていながら時間がなくて結局WONDERLAND 2019が始まってからTop 10/30を計測し始めました。ウラワンの予想でもしようかと思っています。

    DREAMS COME TRUE

    Top 10
    https://www.sanpei.org/YouTube-rank/DCT-graph.html

    Top 30
    https://www.sanpei.org/YouTube-rank/DCT-graph-30.html

    ※ 2019年8月12日分は計測タイミングを月曜日の夕方だったため、通常より多めの再生回数になっています。

    以下参考
    宇多田ヒカル
    Top 10
    https://www.sanpei.org/YouTube-rank/UTADA-graph.html

    Top 30
    https://www.sanpei.org/YouTube-rank/UTADA-graph-30.html

    Perfume
    Top 10
    https://www.sanpei.org/YouTube-rank/PERFUME-graph.html

    Top 30
    https://www.sanpei.org/YouTube-rank/PERFUME-graph-30.html

    Taylor Swift
    Top 10
    https://www.sanpei.org/YouTube-rank/TAYLOR-graph.html

    Top 30
    https://www.sanpei.org/YouTube-rank/TAYLOR-graph-30.html

    ※ 2019/9/1までは、データが一週間分しかないため、宇多田ヒカルとPerfumeのグラフは作成できていません。
    ※ 2019/9/16までは、データが一週間分しかないため、Taylor Swiftのグラフは作成できていません。

    2019年8月29日木曜日

    [2019年夏]T-Mobile 電話番号が無くなったPee-PAID SIMの再有効化(reactivate)


    最初はT-MOBILE.Pay as you goの1week/1GBプラン($10+事務手数料$10)をT-MOBILEのSHOPで契約し、半年後に2GB/1MONTHプラン($10)をMY T-MOBILEから契約しました。その後は日本に帰国したのでWebのMY T-MOBILEで契約解除しました。2GB/1MONTHプランにしたのは、同じ$10で2GBと倍使えるからです(PAY AS YOU GOでは無くて、解約後に電話番号も無効化されたのは解約後に分かった、、、)
    3ヶ月後再度利用しようとMY T-MOBILEで当初の電話番号を入力しても「他でこの番号が使われている」となりMY T-MOBILEからrefillなどができませんでした。

    なぜT-Mobileを使い続けるのか


    現在T-MOBILE系のultra mobileは、オペレータ応答時間はコストダウンのためオフィス時間のみです。一方のT-Mobileは24時間対応してくれます。SIM CARDさえあれば、夜遅く着いた場合などでも手厚くサポートしてくれそうだからです。

    試みてダメだったもの


    1.My T-MOBILEではだめ


    すでに書いたとおり番号が他の人(それも後からオペレータと話してわかったのですが、別の通信会社で再利用されていたようです)に使われて、MY T-MOBILEで紐付け出来ませんでした。

    2.  T-Mobile shopでもだめ


    店員さんにSIM CARD NUMBERを見せて調べてもらったのですが使えない(not avaiableだった)と出てきた。

    3.普通にManage your account: 1-877-778-2106に電話してもだめ


    1. まずは、電話番号を聞かれる
    2. 単にSIM CARD NUMBER伝えても、契約したいのをpay as you goと伝えるとultra mobileのサービス電話に切り替わって、自動応答でACITIVATE CODEを求められてしまいました。このACTIVATE CODEはultra mobileのSIMには印字されていますが、私のSIMはT-MOBILEの物なので記載はありませんでした。
    ultra mobileのオペレータ対応時間ならばここで解決できたかもしれません)

    結局どう解決したか?(REACTIVATEしたか?)


    以上の契約失敗を元に、以下を説明をManage your account: 1-877-778-2106にして、どのようにオペレートしてほしいかをこちらから詳しく説明してREACTIVATEできました(まるでゲームの解き方をオペレータに伝える感じで)。
    1. prepaid simを持っている。4月に2GB /1MONTH契約をしていたが解約した
    2. 今はその時の電話番号がは使えない。新しい番号で良いで、再ACTIVATEしたい(ここはよく言わないと、番号無効だから、そのSIMは使えないとの結論になって終了)。
    3. PAY AS YOU GOをこのSIM CARDで使いたい。SIM CARD NUMBERを伝えるので、Activateしてほしい。
    4. 現在T-MOBILEのpay as you goはultra mobileで提供されているが、私のSIMはT-MOBILEのなのでACTIVATE CODEが無いので、オペレータさんがPAS AS YOU GOを有効にしてほしい。
    以上を伝えたら、再PAY AS YOU GO設定費用$3と1 week /1BG PAY AS YOU GOの$10の合計$13となり、クレジットカード番号などを伝えて、無事Mobile dataプランをT-MOBILEで有効化出来ました。
    $13だと普通にT-MOBILE に行って提携しているultra mobileのpre parid sim買って1week/1GB SIM買うのとおなじ値段ですが、最初に書いたとおり、T-MOBILEの契約をしたかったので、上記の手間をかけました。
    こんなシチュエーションの人は少ないかもしれませんが、何かの参考になればと思いblog化しました。

    2019年8月27日火曜日

    [2019年夏]T-Mobile Pre-PAID Pay as you goプランの再有効化


    2019年のいつ頃からかT-Mobileでは、T-Mobileを使ったMVNOのulltra mobileのみが店頭販売されています。


    T-MobileのPre PAIDのWebページから、"Only pay for what you need."を選択すると、ultra mobileにリンクされたいます。

    そのため、以前ならばWebページのMy T-Mobileで、Pay as you Goのデータプランrefill/有効化が日本からでも出来ましたが、現在(少なくともこの記事を書いている2019/8/26時点)では、普通のプランしか選べません(USAの飛行場のFree Wi-Fiを使って有効化する予定だったため、焦りました)。


    サポートに電話して、T-Mobile従来Pay as you go.Dataプランを有効化


    ここでは、T-Mobileのサポートに電話して無事T MobileのPay as you Goの再契約できたお話です。

    結局Manage your account: 1-877-778-2106に電話する


    私は別途電話できる電話回線を持っていないため、ホテルのWi-Fiからskypeの米国の携帯電話と固定電話への無制限通話プラン(US$2.99/月)を契約して通話しました)
    オペレータとの通話は必要なく、すべてコンピュータの自動応答システムへの応対で手続きできるパスを見つけて対応できました。
    言葉で、Yes/Noで回答する場合もあり、数字を入力して対応できる場合もあります。
    refillはクレジットカード番号を携帯電話(スマホ)のkeypadで入力して対応しました。
    zip codeの要求時には滞在先のホテルのzip codeで問題なかったです。

    飛行場ではmanage your accountでオペレータに相談する事を考えていたため、オペレータにつないで話したのですが、飛行場のFree Wi-Fiが安定せずそこでは解決できませんでした。

    何度か電話して、ゲームをする感じで、どのパスで対応すれば良いかが分かって最終的には再契約できました。