MyDNS.JPでドメインを設定すると、そのドメインでメールサーバを立てることもできるので作ってみる。
外部のメールサーバとメールのリレーができるように25番ポートを開放する
下記コマンドで既に作成してあるポート開放スクリプトにSMTP(25番ポート)のポート番号を追加する。(for port in …; doの…の部分に開放したいポート番号をスペースで区切って追加する。)
sudo sed -i -e 's/for port in \([0-9 ]*\); do/for port in \1 25; do/' /usr/local/bin/mydnsupdate.sh
メールサーバのインストール、メール転送設定
外部とのメール送受信ができるようにメールサーバのPostfixを非対話形式でインストール、メールで使うドメイン名を設定、webmaster、www-data宛のメールがrootに、root宛のメールがpiユーザから変更したユーザに転送されるように設定を追加して、設定を反映させる。(www-dataはWebサーバ等をインストールしなくても存在している。webmasterはApacheをインストールした際にデフォルトの管理者として設定される。)
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y postfix sudo sh -c 'echo "example.mydns.jp" > /etc/mailname' sudo sed -i -e '/^mydestination/i\myorigin = /etc/mailname' /etc/postfix/main.cf sudo sed -i -e '/^mydestination/s/example,/example.mydns.jp, example,/' /etc/postfix/main.cf sudo sh -c 'echo "webmaster: root" >> /etc/aliases' sudo sh -c 'echo "www-data: root" >> /etc/aliases' sudo sh -c 'echo "root: chguser" >> /etc/aliases' sudo newaliases
- ※chguserの部分はpiユーザから変更したユーザ名に置き換える。
mailコマンドのインストールとメールの送受信テスト
コマンドでメールの送受信を行う場合は、下記コマンドでheirloom-mailxをインストールして、mailコマンドとして呼び出せるようにシンボリックリンクを作成する。
sudo apt-get install -y heirloom-mailx cd /usr/bin/ sudo ln -s heirloom-mailx mail cd
mailコマンドは、メールがあれば一覧で表示し、一覧で示されたメールの番号を入力すると内容が表示される。dでメールの削除、rでメールの返信が行える。
メールの返信は本文入力後、行頭に「.」を入力すれば本文入力終了となる。qでmailコマンドの終了となる。
mailコマンドで、宛先メールアドレスを指定するとメールの送信となる。「Subject: 」が出たら件名を入力、その後に本文を入力し、「.」でメール作成終了となる。
OP25Bを実施しているプロバイダでメール送信するために587番ポートを開放する
外部のメールサーバへメールをリレーする際に25番ポートが使えないので、ポート開放スクリプトにサブミッションポート(587番ポート)のポート番号を追加する。
sudo sed -i -e 's/for port in \([0-9 ]*\); do/for port in \1 587; do/' /usr/local/bin/mydnsupdate.sh
OP25Bを実施しているプロバイダでメール送信するためにPostfixの設定を行う
メールのリレー先として、外部のメールサーバのアカウントが必要になる。Gmailも使えるが、メール送信元がGmailアカウントに書き換わってしまう仕様なので注意が必要。
下記コマンドでリレー先のSMTPサーバ名とポート番号を指定、SMTP認証を有効化、SMTP認証に使うパスワードファイルを指定、SMTP認証を必須に設定、古いTLS有効化設定をコメント化して、新しいTLS有効化設定を追記、サーバ証明書検証用のパスを設定、SMTPサーバ名とポート番号、ユーザ名とパスワードを記述してSMTP認証用に使うパスワードファイルを作成、パスワードが記述されているので他のユーザから見えないパーミッションに設定、パスワードファイルを有効化して、Postfixを再起動する。
sudo sed -i -e 's/^relayhost = $/relayhost = [smtp.gmail.com]:587/' /etc/postfix/main.cf sudo sh -c 'echo "smtp_sasl_auth_enable = yes" >> /etc/postfix/main.cf' sudo sh -c 'echo "smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd" >> /etc/postfix/main.cf' sudo sh -c 'echo "smtp_sasl_security_options = noanonymous" >> /etc/postfix/main.cf' sudo sed -i -e '/smtpd_use_tls=yes/s/^/#/' /etc/postfix/main.cf sudo sh -c 'echo "smtp_tls_security_level = may" >> /etc/postfix/main.cf' sudo sh -c 'echo "smtp_tls_CApath = /etc/ssl/certs" >> /etc/postfix/main.cf' sudo sh -c 'echo "[smtp.gmail.com]:587 hogehoge:foobar" > /etc/postfix/sasl_passwd' history -c sudo chmod 600 /etc/postfix/sasl_passwd sudo postmap /etc/postfix/sasl_passwd sudo systemctl restart postfix
メール受信のために110番ポートと143番ポートを開放する
下記コマンドで既に作成したポート開放スクリプトにPOP3(110番ポート)とIMAP(143番ポート)のポート番号を追加する。
sudo sed -i -e 's/for port in \([0-9 ]*\); do/for port in \1 110 143; do/' /usr/local/bin/mydnsupdate.sh
POP3とIMAPのポート開放とPOP3/IMAPサーバのインストール
下記コマンドでPOP3/IMAPサーバのDovecotとDovecot用POP3モジュール、Dovecot用IMAPモジュールをインストール、非SSL接続時に平文認証できるように設定を書き換え、Dovecotを再起動する。
sudo apt-get install -y dovecot-core dovecot-pop3d dovecot-imapd sudo sed -i -e 's/^#disable_plaintext_auth = yes/disable_plaintext_auth = no/' /etc/dovecot/conf.d/10-auth.conf sudo systemctl restart dovecot
メール送信のために587番ポートを開放する
OP25Bを実施しているプロバイダでメールをリレーするために既にポート開放を行っている場合は必要ない。
下記コマンドで既に作成したポート開放スクリプトにサブミッションポート(587番ポート)のポート番号を追加する。
sudo sed -i -e 's/for port in \([0-9 ]*\); do/for port in \1 587; do/' /usr/local/bin/mydnsupdate.sh
サブミッションポートの開放とSMTP認証の設定
下記コマンドでDovecotでPostfixのSMTP認証ができるように設定を書き換え、PostfixでDovecotを使ったSMTP認証ができるように設定を書き換え、Postfixのサブミッションポートを有効化して、DovecotとPostfixを再起動する。
sudo sed -i -e '/# mode = 0666/a\ user = postfix\n group = postfix' /etc/dovecot/conf.d/10-master.conf sudo sed -i -e 's/# mode = 0666/# mode = 0660/' /etc/dovecot/conf.d/10-master.conf sudo sed -i -e '/#unix_listener/,/#}/s/#//' /etc/dovecot/conf.d/10-master.conf sudo sed -i -e 's/^smtpd_use_tls=yes/#smtpd_use_tls=yes/' /etc/postfix/main.cf sudo sh -c 'echo '\''smtpd_sasl_type = dovecot'\'' >> /etc/postfix/main.cf' sudo sh -c 'echo '\''smtpd_sasl_path = private/auth'\'' >> /etc/postfix/main.cf' sudo sh -c 'echo '\''smtpd_sasl_auth_enable = yes'\'' >> /etc/postfix/main.cf' sudo sh -c 'echo '\''mua_client_restrictions = permit_sasl_authenticated,reject'\'' >> /etc/postfix/main.cf' sudo sh -c 'echo '\''broken_sasl_auth_clients = yes'\'' >> /etc/postfix/main.cf' sudo sed -i -e '/^#submission /,/^#smtps /s/^# -o smtpd_sasl_auth_enable=yes/ -o smtpd_sasl_auth_enable=yes/' /etc/postfix/master.cf sudo sed -i -e '/^#submission /,/^#smtps /s/^# -o smtpd_client_restrictions=$mua_client_restrictions/ -o smtpd_client_restrictions=$mua_client_restrictions/' /etc/postfix/master.cf sudo sed -i -e '/^#submission /s/^#//' /etc/postfix/master.cf sudo sed -i -e 's/^auth_mechanisms = plain/auth_mechanisms = plain login/' /etc/dovecot/conf.d/10-auth.conf sudo systemctl restart dovecot sudo systemctl reload postfix
- ※/etc/dovecot/conf.d/10-master.confの「service auth {」から「}」の間にある「#unix_listener /var/spool/postfix/private/auth {」から「#}」のコメント化を解除して、「mode = 0666」を「mode = 0660」に書き換えて、その直後に「user = postfix」、「group = postfix」の2行を追加している。
- ※/etc/postfix/main.cfの「smtpd_use_tls=yes」をコメント化し、「smtpd_sasl_type = dovecot」、「smtpd_sasl_path = private/auth」、「smtpd_sasl_auth_enable = yes」、「mua_client_restrictions = permit_sasl_authenticated,reject」、「broken_sasl_auth_clients = yes」の5行を追加している。
- ※/etc/postfix/master.cfの「#submission inet…」から「# -o milter_macro_daemon_name=…」の間にある「#submission inet…」と「# -o smtpd_sasl_auth_enable=…」と「# -o smtpd_client_restrictions=…」のコメント化を解除している。
- ※/etc/dovecot/conf.d/10-auth.confの「auth_mechanisms = plain」を「auth_mechanisms = plain login」に書き換えている。