2 min read

Postfixでメールの送受信を行う

メールサーバーの構築が無事終わったのでそれの覚え書き

本記事はPostfixでメールを送受信するところまで。
次回、IMAPとPOPに対応してOutlookとかからメールの閲覧を可能にするようにする。

正直Postfix自体は構築してから時間が経っているのでうる覚え状態だけどそこは勘弁して

それじゃあさっそく。

$ sudo apt-get install postfix

これでインストールが終わり、/etc/postfixにpostfixのファイル群が生成されたはず。

main.cfが設定ファイル。
その設定ファイルの中から他のファイルなどを参照している感じ。
あくまでも主体はこいつ

コメントアウトとかもどうせ読めない読まないのでまるっとコピペしちゃおう(提案
ほんとはバックアップした方がいいよ

## cat /etc/postfix/main.cf
home_mailbox = Maildir/
myhostname = {Your Hostname}
mydomain = $myhostname
myorigin = $myhostname
mydestination = $myhostname, localhost
mynetworks = 192.168.1.0/24, 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases

relayhost = [mail.so-net.ne.jp]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/so-net
smtp_sasl_mechanism_filter = CRAM-MD5

smtpd_recipient_restrictions =
        permit_mynetworks,
        check_recipient_access hash:/etc/postfix/users,
        reject

かなり個人的な設定が混じっていると思います。順に説明?していこう(?)

まず最初のmyhostnameとかmydomainとかはうん。そのままの意味です

home_mailbox : メールを保存するディレクトリの指定。
Maildir/を指定すると、/home/{user}/Maildir/以下にメールが保存される。
メール保存用ディレクトリを指定しておき、ユーザーごとに新規ディレクトリを生成する方法もあるが、こちらのほうが自分のものという感じで良いし、ホームディレクトリなので管理してる間に間違えにくそうなので採用。

aliases

例:
## cat /etc/postfix/aliases
postmaster: root
admin: root

このようにすることでpostmasterとadminユーザー宛に来たメールはrootユーザーに自動転送されるというもの。
転送先はユーザーだけでなく、hoge@hoge.jpというように直接メールアドレスを指定することも可能。

設定の反映には

$ sudo newaliases

が必要

relayhost

一番悩んだところ。
relayhostを設定せずにメールを送っても25: No route to host.というエラーで送信出来ず終いだったのがこいつで解決した。

25: No route to host.で検索をかけてもだいたいOP25Bが原因という記事しか見つからなかった。
そこで25番ポートに制限がかかってないかtelnetでチェックしてみた

$ telnet smtp.gmail.com 25

ふつうに応答が返ってきた。なんだよ規制なさそうやんけ・・・

そこからいろいろ試してみてこれでメールの送信ができるようになった。
So-netの自分のメールアドレスのIDとPASSでログインしてあげて、So-netを経由しないとメールが送れないみたい(ここらへんのことがよくわからない)

## cat /etc/postfix/so-net
mail.so-net.ne.jp {Your Login ID}:{Your Login PASSWORD}

これだけで解決して唖然とした。
パスワードがそのまま記述されているのでpostfix以外には見えないようにする。

$ sudo chgrp postfix /etc/postfix/so-net
$ sudo chmod 640 /etc/postfix/so-net

dbに変換する

$ sudo postmap /etc/postfix/so-net

受信ユーザーの限定

限定してやらないと、root宛のメールもふつうに受信するし、いろいろ面倒。
受信したいユーザー宛のものはそのまま受信するけど、受信したくないユーザー宛のものはエラーメッセージを返したい。

受信したいユーザーを/etc/postfix/usersに記述する。

例:
## cat /etc/postfix/users
postmaster@ OK
admin@ OK

こうすることでpostmasterとadmin宛のメールのみを受信し、それ以外はエラーメッセージを返すようにできる。
dbへの変換はrelayhostと同じ

$ sudo postmap /etc/postfix/users

ポート開放

smtpプロトコルを使うので25番ポートを開けておきましょう。

$ sudo ufw allow 25/tcp

終わり

これでメールの送受信ができるようになるはず。
relayhostを設定しないと受信はできても送信ができないので注意。ISPによってまちまちだと思うのでそこら辺はがんばって。

まだ現段階では受信したメールを開く手段がないので次回、Dovecotを使ってPOP3とIMAP鯖を立ててみる