2020/07/24

Postfix on MacOS

なんか試行錯誤してやっとたどり着いたので記録.自宅などで,private net に隠れた Mac から,プロバイダのSMTPサーバ経由で外にメールを送る設定をする手順.

まず,relayhost を main.cf に設定する.
relayhost = smtpserver.example.com:port#

あとは巷にあふれるSMTPの設定."Mac postfix gmail" とかで検索すると情報いっぱいある.
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes

で,最後にやっと解決できたのは,メールの from アドレスの書き換え.SMTP認証が通っても,from が正しくないと通してくれない.うちの場合は, "Sender address rejected: not owned by user xxx@xxxx.example.com" と言われました.ので,これを強制的に書き換えてあげる必要があって,sender_canonical_maps に変換テーブルを作ってあげる.
sender_canonical_maps = hash:/etc/postfix/sender_canonical
local_header_rewrite_clients = static:all

中身↓
naotaka@(hostname).local email-address-in-provider

% sudo postmap /etc/postfix/sasl_passwd
% sudo postmap /etc/postfix/sender_canonical

(余談)
From アドレスの書き換えには, main.cf の myhostname を書き換えることでも対応可能なようにも思えるのですが,そこでは,naotaka@$myhostname になってしまいます.この naotaka がプロバイダのアカウントと一致してないといけないので,弾かれてしまいました.かつ,xxx@$myhostname の xxx が Mac に存在しないと不達になるという罠もあるので, myhostname は無視で,sender_canonical が正解でした.

(残課題)
SMTPUTF8 is required, but was not offered by host [provider-smtp-server] というエラーは出ていて,どうやら subject に日本語が入っていると通らなくて,crontab でディレクトリに日本語が入ってるスクリプトを起動してると subject に日本語が入ってしまって送れないという罠が残ってます.これはsmtp server 側の機能不足?か,client でencode してあげれば良いだけ?

(参考) https://tech-lab.sios.jp/archives/12289

2020/06/08

Matplotlib on Mac

http://ekbo.blogspot.com/2020/02/matplotlib-on-mac-homebrew.html

混沌としてきた.Catalina にアップグレードするタイミングで, Python 3.8 が供給されたのか,タイミングは分からないけど,自分にとっては同時になってしまった.

>>> import matplotlib.pyplot as plt
ImportError: numpy.core.multiarray failed to import
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/homebrew/lib/python3.7/site-packages/matplotlib/__init__.py", line 205, in <module>
    _check_versions()
  File "/opt/homebrew/lib/python3.7/site-packages/matplotlib/__init__.py", line 190, in _check_versions
    from . import ft2font
ImportError: numpy.core.multiarray failed to import

発端はこいつ.Pythonでグラフが書けなくなった.何が起きているのか全く分からなかったのだが,

% brew search python3

で判明.python@3.8 が供給されていて,インストールされている!!何かが起きても仕方がない状況が生じてしまったようだ...諦めて,

% /opt/homebrew/opt/python@3.8/bin/pip3 install matplotlib

で入れ直し.動いた.3.7 の削除をすべきか?

ps.
pipにしようかどうしようかと思っていたところもあったが,brewでpython入れると,

# You can install Python packages with
# /opt/homebrew/opt/python@3.8/bin/pip3 install <package>
って言われてる.従え.

2020/04/05

montageでフォントエラー

何故か, montage で画像を連結しただけで,フォントエラー

montage: unable to read font `helvetica' @ error/annotate.c/RenderFreetype/1391.

が出た.

対処作が簡潔すぎて驚いたのだが,gs (ghostcript) を入れたら解決とな...

% brew install gs

参考)
https://apple.stackexchange.com/questions/224285/why-does-image-magick-fail-to-read-fonts

2020/02/22

Matplotlib on Mac Homebrew

matplotlibの入れ方更新 -> https://ekbo.blogspot.com/2020/06/Matplotlib-on-Mac.html 2020.6.8

自分がどうするかの宣言も含めて,Mac OS X の Homebrew の Python (Version 3) でどう環境を構築するか.

そもそも Python 自体のインストールが混沌としてしまっている...

  1. QGISのためのパッケージインストール.確か,QGISのインストールで,Python3 をバイナリパッケージで入れろと言われた気がする.
  2. MacPorts がまだ Homebrew への完全移行が終わっていないので残ってる.
  3. Homebrew で入れた

/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
/opt/homebrew/bin/python3
/opt/local/bin/python3
/usr/local/bin/python3
一つ多い....

で,Matplotlib をはぢめましょう.と思ったときに,ふと,,,どうすんだ?

確実に,Homebrew の環境で作業するために,
/opt/homebrew/bin/pip3.7 install matplotlib
にしました.pip3 で十分ですが... pip とすると, Version 2 と Version 3 を見失う場合があるので念の為(自分は,Python2 をインストールしていないので混乱しませんが).

#!/opt/homebrew/bin/python3

import sys
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

t = np.arange(0,2*np.pi, 0.1)
plt.figure(1)
plt.plot(t, np.sin(t))
plt.show()

sys.exit(0)

動いた!