2016/08/09

postfixの設定など

社員用にPHPプログラム運用兼ファイルサーバを設置している。
いままでは、ローカルなメールの遣り取りだけで済んでいたのだが
どうしても、外部のメールサーバを経由して外部ユーザにメールを送らないといけなくなった。

ローカルの設定は結構いい加減にやっており、
外部にメールを送ろうとすると、rejectされてしまう。

CentOS7.x はpostfixが推奨されているので、設定することにした。

はじめに
postfixが動いているか?確認




# systemctl status postfix.service

今回は、phpが絡むので、設定する。
/etc/php.ini
L980位の
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = なんかそれなに名前を付けておく。

※SMTP認証を使うときは、もう少し追記があるらしい。(今回はいらない)

# systemctl restart httpd.service
PHPの設定有効


つづいてpostfixの設定

前のかなりラフなものをちゃんとする。

 /etc/postfix/main.cf

L60
mail_owner = postfix 別のユーザに変更するときは、書き換える(今回不要)

myhostname = mail.xxx.co.jp 等

mydomain = xxx.co.jp 等

inet_interfaces = localhost 受信設定。受信しないので、localhostで良いが、ルータ等でセキュア環境にしてあるならば、allでもOKと思われる。

inet_protocols = ipv4 おまじない。ipv6をkillしている際は、記載しないと動かないらしい。

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ←註

mynetworks = XXX.XXX.XXX.0/24, 127.0.0.0/8 許容するネットワークの範囲を記載


mydestination に $mydomain を記載する際の注意

内部用のサーバから外部用のサーバにリレーする際に、
内部的には固定IP割り当てて、ルータで締めて、トンネル作って、そのアドレスを許容すればいいのだが、そこから外部に送る際、最近のレンタルサーバ等は、domainがいい加減だと、rejectしてくる。

そこで、$mydomainには、送信する際に問い合わせを受けても問題ないdomainを記載しておくのだが、mydestination に $mydomain を安易に書き加えると、外部サーバと内部サーバに同一の
アカウントがいる場合は、そのユーザに関しては、ローカルサーバ内にメールを送ってしまい。
本来の$mydomain に送るべきものが全く送れない状態になってしまうので、
注意が必要。
外部サーバを使ってメールを送信するような内部サーバのpostfixの設定で、
よほど特殊(たとえば内部で擬似的に運用する等の)な環境でない限り、
記載する際は注意が必要。






※SMTP認証を使う場合は、この辺も有効にする。
# In the case of SMTP, specify a domain, host, host:port, [host]:port,
# [address] or [address]:port; the form [host] turns off MX lookups.
#
# If you're connected via UUCP, see also the default_transport parameter.
#
#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]

その他はそのままで大丈夫と思われる。

# systemctl restart postfix.service
再起動
# systemctl status postfix.service
エラーが無いか確認する。



この設定で、問題なく中継が出来た。
今後Gmailやその他のメールサーバと絡めたりしたいときには、
SMTP認証が必要になる。(今は止めておく)