PostfixでCentOS7に転送用メールサーバーを構築

## 目的
・面倒で時間がかかるメール申請をせずに、短時間で開発用のメーリングリストを自由に発行したい
・自メールサーバー内にメールを保存しないで転送したい

## 構築するメールサーバーの概要
メールサーバーを構築する場合、送信メールサーバー(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ユーザーに切り替えてから構築

## 構築の手順
[１]　　DNS の MX レコードを設定
[２]　　Postfix をインストール
[３]　　Postfix の設定を変更
[４]　　エイリアス設定
[５]　　ファイアウォール(firewalld)の設定を変更
[６]　　メール送信/転送の動作確認

###  [１]　　DNS の MX レコードを設定
1. メールアドレスのドメインは 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 レコードも登録


2. DNS の MX レコードを設定確認方法

方法１: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の設定エラーがないので問題なく設定できたことが分かる。

###   [２] 　　 Postfix をインストール
CentOS 7 には Postfix がデフォルトでインストールされているはずなので下記のコマンドで確認
$ yum list installed | grep postfix	
結果：
postfix.x86_64                     2:2.10.1-7.el7                  @base

コマンドで何も表示されなかった場合、 下記のコマンドで Postfix をインストール
$ yum install postfix

###  [３]  　　Postfix の設定を変更
 Postfix 設定の変更は、main.cfの変更（/etc/postfix/main.cf）
1. バックアップ取る				
	main.cf.org			
2. ホスト名を設定				
	myhostname = mail.myhost.com			
3. メールアドレスのアットマーク以降に現れるドメイン名を設定				
mydomain = myhost.com		
4. メールサーバーから送信されるメールで利用されるドメイン名を設定
```		
myorigin = $mydomain
```  			
5. メールを受信するネットワークインターフェースを設定				
inet_interfaces = all		
6. 送られてきた(受信した)メールのうち、このサーバーで受け取るべきドメインを指定
```				
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
```						
7. メール格納形式をMaildir形式にする				
home_mailbox = Maildir/			
8. メールサーバーソフト名の隠蔽化
```				
smtpd_banner = $myhostname ESMTP unknown
```	
9. ipv6を無効にする
```				
inet_protocols = ipv4
```				
10. postfix再起動	
```	
$ systemctl reload postfix.service
```				
10.自動起動状態設定	
```		
$ systemctl is-enabled postfix
```	

	
###  [４]  　　エイリアス設定
1. バックアップ取る（/etc/postfix/aliases）				
	aliases.org			
2. aliases設定をする		
/etc/aliases ファイルの末尾に下記を追加する	
	develop: develop_member1@coname.com,develop_member2@coname.com			
3. /etc/aliasesファイルを変更したら、newaliasesコマンドを実行					
	/etc/aliases.db（エイリアスデータベース）を更新すると、Postfixは/etc/aliases.dbを参照して転送を行う。				
設定が反映されると、develop@myhost.comメールを送信した際に、develop_member1@coname.com,develop_member2@coname.comに転送される		

###  [５] 　ファイアウォール(firewalld)の設定を変更
1. アウォール機能(firewalld)が有効確認

```
 $systemctl status firewalld
```	
![スクリーンショット 2020-08-11 13.24.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274686/9b867279-51b0-c279-06d2-7210aa70c967.png)

コマンドの実行結果の Active の値が active (runnning) となっていれば、ファイアウォールが有効
2. ファイアウォールが外部に向けて開放しているサービス確認
```
 $ firewall-cmd --list-services --zone=public --permanent
 結果：ssh dhcpv6-client samba
```
3. 外部に対して SMTP のポートを開放
 ```
 # firewall-cmd --add-service=smtp --zone=public --permanent
結果：success
```	
4. ファイアウォールの設定をリロード
 ```
$ firewall-cmd --reload	
結果：success	
```	
5. ファイアウォールが外部に向けて開放しているサービス確認
```
 $ firewall-cmd --list-services --zone=public --permanent
 結果：ssh dhcpv6-client samba smtp
 smtpが追加されたので25番ポート解放
 
 下記のコマンドでも確認可能
 $ firewall-cmd --list-all
```
6. サービスが動いていることを確認
```
$systemctl list-unit-files | grep firewalld			
結果：	firewalld.service                             enabled		
```
7. firewalldを再起動して反映
```
$ systemctl restart firewalld	
 ```
 8. Portチェックテスト【外部からのPort開放確認】
 http://www.cman.jp/network/support/port.html
 ホスト名とポートを入力しチェックすると下記の結果が表示される
 ```
 ホスト：mail.myhost.com		
ポート：25 にアクセスできました
```
結果から25番ポートが解放できたぽい

###  [６]　　　メール送信/転送の動作確認
1. 送信テスト

 ```
 下記のコマンドで送信テスト
$ 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