サーバ構築備忘録

Raspberyy Pi 3をセットアップ(メールサーバ構築完全に私的な備忘録)

LINEで送る
Pocket

目標

Raspberryに他のPCはぶら下がっていないので、特にメールサーバとして設定するつもりはありませんでした。

しかし、Raspianで使用しているサービスからメールを自動で送る場合などが考えられるのでそのための設定をしておきます。

目標としては
  • simple-server.netの名前解決ができるようにする。
  • localhost内のアカウント同士でメールが送れる。
  • Raspbianにログインしてメールが読める。
  • 外向けのメールをプロバイダのメールサーバに中継を依頼する。
  • 不正中継の踏み台にならずに、自分は外部からでもメール送信ができる。
  • 外部からでもメールを読むことができる。
といったところです。

simple-server.netの名前解決ができるようにする

今まで名前解決(DNSサーバ)にはbindを使ってきましたが、調べてみるとdnsmasqというのが設定も簡単でおすすめらしい。

そこで
>sudo apt-get install dnsmasq
でインストールします。

設定は
/etc/dnsmasq.conf

19行目のdomain-needed
21行目のbogus-priv
124行目のbind-interfaces
135行目のexpand-hosts
の4つをアンコメントする。

74行目をlocal/自分のドメイン名/
144行目をdomain=自分のドメイン名

に書き換えるだけです。

あとは/etc/hostsに必要な情報を書き込み
>sudo systemctl enable dnsmasq
>sudo systemctl start dnsmasq
します。

 

localhost内でメールが送れるようにする

MTAにはpostfixを使います。

>sudo apt-get install postfix
サーバの種類を聞かれるので「インターネットサイト」を選択する。
システムメール名を聞かれるので取得済みのドメイン名を入力する。

以前takoyaki.homeip.netのメールサーバを設定したときにSASLを利用したことがあるので、こちらもインストールしておきます。

>sudo apt-get install sasl2-bin libsasl2-modules

まずはSASLの設定を/etc/default/saslauthdで行います。
7行目の no を yes に変更する。

続いてpostfixの設定を/etc/postfix/main.cfを編集します。

行末に

message_size_limit = 0
inet_protocols = ipv4
inet_interfaces = all
home_mailbox = Maildir/
smtpd_sasl_auth_enable=yes
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination reject_unauth_destination
smtpd_sasl_security_options=noanonymous,noplaintext

を追加します。(ファイルの上の方に同じ設定があるとオーバーライドすると警告が出るので削除しました。)

 

メールが保存されるディレクトリを作成する。

>mkdir ~/Maildir
>chmod 700 Maildir

ユーザが追加されたときに自動でMaildirを作るようにする。

>mkdir /etc/skel/Maildir
>chmod 700 /etc/skel/Maildir

とりあえずこれでlocalhost内にメールは送れるようになったはずです。

 

Raspbianにログインしてメールが読める

raspbianには標準でmailxが入っていないのでこれをインストールします。

>sudo apt-get install heirloom-mailx

試しに

>mail hogehoge

してみると、確かに自分のホームディレクトリの下のMaildirの中にcur,new,tmpといったディレクトリが作成されnewの中に先ほどのメールが送られています。

mail -f ~/Maildir

するとメールが読めることが確認できます。

いちいちMaildirを指定するのが面倒なので
~/.bash_profile

export MAIL=$HOME/Maildir
と書いておきます。

 

外向けのメールをプロバイダのメールサーバに中継を依頼する

これではまりました。

CATVインターネット接続のメールサーバに中継を依頼しようと
/etc/postfix/main.cf の中の relayhost
をいじったりしていたんですが一向にメールを転送してくれない。

ふと思いついてrelayhostの設定を全て消して、外向けのメールを直接送るようにしたら無事送れました。

そうです。ここのプロバイダは25番ポートブロックをしていなかったのです。
いやぁ1日無駄にしてしまいました。

 

ほかのPCからのメールは中継しない

postfixがSMTP-AUTHを使ってユーザ認証するように設定します。

localhost内でメールを送れるようにした際に/etc/postfix/main.cfの設定は済んでいます。

ドメイン名がexample.net ユーザがhogehogeとするとユーザの登録は次のようになります。

>sudo saslpasswd2 -u example.net -c hogehoge
パスワードを2回入力。

ここで作成した情報が含まれているファイルをpostfixが読めるようにします。

>sudo chgrp postfix /etc/sasldb2
>sudo chmod 640 /etc/sasldb2
>sudo ln /etc/sasldb2 /var/spool/postfix/etc/

587番ポートでメールを受け付けるように
/etc/postfix/master.cf

submission inet n - - - - smtpd
の行をアンコメントします。

ここまで行って
>sudo systemctl restart postfix
すればOK(のはず)

ルータの25番と587番ポートを開きます。

他のプロバイダに接続している(外部の)PCから587番ポートを利用してyahooメールに送るというテストをしてみると、IDとパスワードを要求されるので不正中継は出来ないので一安心。

 

外部からでもメールを読むことができるようにする

基本的にSSHでつなげてmailでメールが読めればいいんですが、一応普段使っているPCからもメールが読めるようにしておきます。

使うのはdovecotです。

>sudo apt-get install dovecot-core dovecot-imapd

宅内LANであればプレーンテキストでパスワードを認証してもいいんですが、外部のネットワークを介してメールを取ってくるためSSLを使用します。

>sudo apt-get install openssl

でopensslをインストールします。

この後はこちらのページを拝見して作業を勧めます。

ルータの993番ポートを開いて接続できるか確認します。

あとはクライアントで使うThunderbirdの設定かな?

 

※追記

/etc/dovecot/conf.d/10-mail.confに
mail_privileged_group = mail
を書かないと
dovecot: imap(hogehoge): Error: open(/var/mail/hogehoge) failed: Permission denied (euid=1001(hogehoge) egid=1001(hogehoge) missing +w perm: /var/mail, we're not in group 8(mail), dir owned by 0:8 mode=0775)
とでてThunderbirdでつなげないことが判明。

/etc/dovecot/conf.d/10-mail.confは
mail_location = maildir:~/Maildir
としておかないと、postfixで送ったメールが読めない。

わたしの設定した環境独自かもしれないが一応記録。

LINEで送る
Pocket

ランキングリンク

ランキングに参加しています。応援クリックお願いします。
にほんブログ村 その他生活ブログ 断捨離へ

-サーバ構築備忘録
-