目的
・面倒で時間がかかるメール申請をせずに、短時間で開発用のメーリングリストを自由に発行したい
・自メールサーバー内にメールを保存しないで転送したい
構築するメールサーバーの概要
メールサーバーを構築する場合、送信メールサーバー(SMTPサーバー)と受信メールサーバー(POP/IMAPサーバー)の構築が必要となるが、
今回は、メーリングリストにメールを転送する機能だけでいいのでPostfixで送信メールサーバー(SMTPサーバー)のみを構築する。
・ メールサーバーのメールアドレスは、 develop@myhost.com(myhost.comはドメイン)
・メールサーバーのホスト名は mail.myhost.com とし、DNS の MX レコードに登録
・ develop@myhost.comで受信したメールは、全て下記の転送先のメーリングリスト宛に転送
develop@myhost.com->develop_member1@coname.com, develop_member2@coname.com
サーバー情報
・今回利用するサーバーは他のPJが入っているCentOS7のサーバーを利用
・もらった権限はrootユーザーではないので、ログイン後suでrootユーザーに切り替えてから構築
構築の手順
[1] DNS の MX レコードを設定
[2] Postfix をインストール
[3] Postfix の設定を変更
[4] エイリアス設定
[5] ファイアウォール(firewalld)の設定を変更
[6] メール送信/転送の動作確認
[1] DNS の MX レコードを設定
- メールアドレスのドメインは myhost.com ですが、実際のメールサーバーは mail.myhost.com というサーバー
①myhost.com. IN MX 10 mail.myhost.com.
この設定はDNS の MX レコードを設定
②mail.myhost.com IN A 10.x.x.xxx
この設定はmail.myhost.com をサーバーのIPアドレスと紐づける A レコードも登録
- DNS の MX レコードを設定確認方法
方法1:digでMXレコードを確認
$ dig any xxxxx.jp
XXXXXX.jp. 3600 IN TXT "v=spf1 +ip4:123.123.12.12 include:_spf.google.com ~all"
XXXXXX.jp. 300 IN MX 10 mail.XXXXXX.jp.
XXXXXX.jp. 60 IN A 123.123.12.12
XXXXXX.jp. 86400 IN SOA 01.dnsv.jp. hostmaster.dnsv.jp. 1618993752 3600 900 604800 300
方法2:nslookupでMXレコードを確認
$ nslookup
$ server 10.x.x.xxx
$ set q=MX
$ myhost.com
方法3:MX レコード を確認してくれるサービス
http://mxtoolbox.com/
smtp、dns、mxの設定エラーがないので問題なく設定できたことが分かる。
[2] Postfix をインストール
CentOS 7 には Postfix がデフォルトでインストールされているはずなので下記のコマンドで確認
$ yum list installed | grep postfix
結果:
postfix.x86_64 2:2.10.1-7.el7 @base
コマンドで何も表示されなかった場合、 下記のコマンドで Postfix をインストール
$ yum install postfix
[3] Postfix の設定を変更
Postfix 設定の変更は、main.cfの変更(/etc/postfix/main.cf)
- バックアップ取る
main.cf.org - ホスト名を設定
myhostname = mail.myhost.com - メールアドレスのアットマーク以降に現れるドメイン名を設定
mydomain = myhost.com - メールサーバーから送信されるメールで利用されるドメイン名を設定
myorigin = $mydomain
- メールを受信するネットワークインターフェースを設定
inet_interfaces = all - 送られてきた(受信した)メールのうち、このサーバーで受け取るべきドメインを指定
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
- メール格納形式をMaildir形式にする
home_mailbox = Maildir/ - メールサーバーソフト名の隠蔽化
smtpd_banner = $myhostname ESMTP unknown
- ipv6を無効にする
inet_protocols = ipv4
- postfix再起動
$ systemctl reload postfix.service
10.自動起動状態設定
$ systemctl is-enabled postfix
[4] エイリアス設定
- バックアップ取る(/etc/postfix/aliases)
aliases.org - aliases設定をする
/etc/aliases ファイルの末尾に下記を追加する
develop: develop_member1@coname.com,develop_member2@coname.com - /etc/aliasesファイルを変更したら、newaliasesコマンドを実行
/etc/aliases.db(エイリアスデータベース)を更新すると、Postfixは/etc/aliases.dbを参照して転送を行う。
設定が反映されると、develop@myhost.comメールを送信した際に、develop_member1@coname.com,develop_member2@coname.comに転送される
[5] ファイアウォール(firewalld)の設定を変更
- アウォール機能(firewalld)が有効確認
$systemctl status firewalld
コマンドの実行結果の Active の値が active (runnning) となっていれば、ファイアウォールが有効
2. ファイアウォールが外部に向けて開放しているサービス確認
$ firewall-cmd --list-services --zone=public --permanent
結果:ssh dhcpv6-client samba
- 外部に対して SMTP のポートを開放
# firewall-cmd --add-service=smtp --zone=public --permanent
結果:success
- ファイアウォールの設定をリロード
$ firewall-cmd --reload
結果:success
- ファイアウォールが外部に向けて開放しているサービス確認
$ firewall-cmd --list-services --zone=public --permanent
結果:ssh dhcpv6-client samba smtp
smtpが追加されたので25番ポート解放
下記のコマンドでも確認可能
$ firewall-cmd --list-all
- サービスが動いていることを確認
$systemctl list-unit-files | grep firewalld
結果: firewalld.service enabled
- firewalldを再起動して反映
$ systemctl restart firewalld
- Portチェックテスト【外部からのPort開放確認】
http://www.cman.jp/network/support/port.html
ホスト名とポートを入力しチェックすると下記の結果が表示される
ホスト:mail.myhost.com
ポート:25 にアクセスできました
結果から25番ポートが解放できたぽい
[6] メール送信/転送の動作確認
- 送信テスト
下記のコマンドで送信テスト
$ echo "test_root" | mail -s "test_root" tester@gmail.com
Postfix のログファイル /var/log/maillog
$ tail -f /var/log/maillog
送信されてログも正しく出ているのを確認できた
2.転送テスト
tester@gmail.comより「エイリアス設定」で設定した下記のメーリングリストアドレスに送信テスト
develop@myhost.com
下記の転送アドレスに問題なく転送されていることを確認
develop_member1@coname.com,develop_member2@coname.com
下記のログからも正しく転送されていることが確認できる
Postfix のログファイル /var/log/maillog
$tail -f /var/log/maillog
status=sent (250 2.0.0 OK...)
参考サイト:
https://weblabo.oscasierra.net/postfix-centos7-install-1/
http://centossrv.com/postfix.shtml