OS X LocalhostのApache PHP からプロバイダのSMTPサーバーでメール送信

OS X のLocalhost内のApache + PHPのmb_sendmailからプロバイダのSMTPサーバを指定してメール送信すると「Domain of sender address _www@hoge.local does not exist」送信元ドメインが存在しないので、失敗します。

php.iniやpostfixをいじるなどのいろいろな情報があったのですが、最終的に下記で解決しました。
ざっくりいうと、送信用のアカウント・パスワードとドメインをpostfix上で指定するという設定作業です。

お約束ですが、作業はすべて自己責任で行ってください。

————–
例)
OS Xローカルサーバー:hoge.local
プロバイダ:foo.ne.jp
送信ポート:587

すべてターミナル上での作業です。

  1. postfixの起動
    # sudo postfix start
  2. main.cfの編集(編集にはもっぱらpicoを使っています。)
    # sudo pico /etc/postfix/main.cf

    relayhost = [smtp.foo.ne.jp]:587
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/authinfo
    smtp_sasl_security_options = noanonymous
    smtp_sasl_mechanism_filter = CRAM-MD5 PLAIN
    smtp_generic_maps = hash:/etc/postfix/sender_canonical
    ※認証方法はプロバイダによって違います。こちらに詳しく記載されています。

  3. 認証ファイルの作成
    # sudo pico /etc/postfix/authinfo

    [smtp.foo.ne.jp]:587 bar@foo.ne.jp:password

    # sudo postmap /etc/postfix/authinfo

  4. sender_canonicalファイルの作成 こちらに詳しく記載されています。
    # sudo pico /etc/postfix/sender_canonical

    @hoge.local bar@foo.ne.jp

    # sudo hash:/etc/postfix/sender_canonical

  5. postfixのリロード

    # sudo postfix reload

以上でPHPからmb_sendmailでメールの送信に成功しました。

参考にさせていただいた2つのサイトの方に感謝します。

 

OS X 10.10.5, PHP 5.5.29

恐る恐るtrimforce

使用中のMacbookAir(late2010)のSSDをJetDriveTS240GJDM500に交換してみた。これはSSDとケースを同梱した商品で、交換前に使用していたSSDをケースに入れて外部ドライブにできる優れものだ。ドライバー(工具)まで付属しているので、あっという間に入れ替えは完了した。またその外部ドライブから使用していたOSでブートできるのでインストール作業も非常に楽だった。
そしてTrimだが、10.10.4からOSに付属しているtrimforceを使用してみた。一応メーカのサイトではFAQにサラッと言及されているので問題ないと思われる。交換後2日使ったが特に問題は起こっていない。なんだか嬉しい。
(交換・使用はくれぐれも自己責任で。)

ssd

 

OS X 10.10.5, MacBookAir Late2010, Transcend JetDrive TS240GJDM500

 

[追記 2015.10.1]

El Capitan 10.11にアップグレードするとTRIMサポートがオフになりました。再度TrimForceでオンにすると、上記同様「TRIM サポート はい」になりました。確認しなかったら気づかないままオフで使い続けていました。

plistのバイナリ変換はplutil

今更なのだろうけど、plistのフォーマット変換はコマンドラインのplutilで出来るんですね。

[テキスト形式]plutil -convert xml1 info.plist
[バイナリ形式]plutil -convert binary1 info.plist

他にも豊富な機能があるみたい。以前はplistエディタでこのあたりできたと思うんですが...

OS X 10.10.5

Yosemite apacheユーザのSitesディレクトリでPermission denied

MavericksからYosemiteにアップグレードしたらApacheが停止していたので、apachectl startで起動した。ドキュメントルートは表示できたのだが、ユーザ毎のディレクトリがPermission deniedで表示できない。

MavericksのApacheが2.2なのに対してYosemiteでは2.4に上がっているようだ。
すこし[username].confの記述方法が違うらしい。

下記のように設定すると表示されるようになった。

Apache localhost 403 error with Yosemite | stackoverflow

アップグレードするたびに何かあるな。

OS X 10.10.4

 

[追記]

Yosemiteをクリーンインストールした時に上記だけでは解決できない場合があった。
httpd.confのユーザ・グループのデフォルト値を下記のように変更した。

User _www
Group _www

User 自分のユーザー名
Group staff

ローカルの開発環境なので取り敢えずこうしておこう。

 

undefined symbols for architecture arm64 ビルドできない

Xcodeのバージョンアップのタイミングで、「undefined symbols for architecture arm64」エラーがでてビルドできなくなった。

メニューの「Clean」を実行して再ビルドするなど、試行錯誤するもエラーは消えず全く前に進まない。そういえば幾つか前のXcodeだかProjectBuilder時代には「全てをクリーン」などというメニューがあったなぁと思い、Prefereceのキーバインドを見るとメニューアイテムにはないものの「Clean build folder…」というのがありました。

shift + command + option + k

これで無事ビルドできた。何時間掛かってるんだか。

return top