ビジネス用のEmailもGmailで済ます個人や事業所が多く、
レンタルサーバと契約すると独自ドメインでのメール運用もプランに当然含まれる時代です。
自宅でメールサーバ構築の需要は少ないとは思いますが、
2ヶ月奮闘したため私の備忘録として残します。
はじめに
おことわり
本記事のサーバ知識は全て独学であり、専門的に学んでおりません。出来る限りの検証を繰り返した上で内容を書いていますが、故障や不具合等が発生した場合には一切責任を負えません。予めご了承ください。
ラズパイはメールサーバに向いているのか?
- 結論 ラズパイ4はデータの往来が少ないメールサーバに向いている

今のWebをブラウジングするには、ラズパイ4ではもはや重く、GUI での操作はストレスを感じてしまいます。
何度か手放すことも考えましたが、月額約76円[1]ラズパイのTDP3.4W, … Continue readingで運用できるPC機種はこのラズパイ以外に思い当たらないため、
あまり負荷のかからないメールサーバに向いている、と思います。
さくらのレンタルサーバ スタンダード
のメールサーバだけのプランでも月額88円(36ヶ月払い)〜なので、自分でメールサーバを構築した方が運用コスト面でも安い。
宅内専用ローカルWebサーバも同時に運用すると、自由度が高まります。
例えば、
- WWWに公開しないWordPressを設置して、請求書作成専用のCMSとする。
- 作成した請求書を、Gmailリレーの独自ドメインから添付送信する。
個人事業主・フリーランス・クリニックを職業とされる方には需要があると思います。
常時電源ONは、結構気がかりな点になるので、
月額76円なら気にならないかな、と。
但し、ルータのportを数多く開放するので、海外からの不正ログイン試行が秒単位でたくさん仕掛けられます。
ufw で拒否していますが、手間がもっと増えるとなると、メールサーバ運用撤退も視野に入れています。
本記事を書くに至った経緯
メールサーバを構築しようとネットを検索しても、
OSが古い時代の頃の記事が多かったり、内容がかなり難解のものが多かったりで、
2025年に通用するメールサーバ構築記事を書きたい思いが生まれました。
個人的には、ラズパイbookwormでWebサーバ・WordPress・Samba構築よりも、
メールサーバ構築は桁違いに難しく、失敗は20回くらい経験しました。
本記事のやり方で、OSがUbuntuでもメールサーバ構築できます。
一番最初はDebianでメールサーバ構築を始めましたが、記述が異なって分からない点が次々と出てきたため、
断念しました。
参考にさせて頂いたサイト様
以下の3つのサイト様を本記事に1つにまとめたような構成になっております。
- ラズパイでメールサーバーを構築するよ2/2(Postfix+Dovecot) | sukiburo
- メールサーバー|Ubuntu 22.04サーバー構築入門
- PostfixからGmail経由でメールを送信するための設定メモ | あぱーブログ
この場をお借りして各サイト様にお礼申し上げます。
用途・環境・前提
用途
余っている独自ドメインがあり、ごく限られた人だけに教えるメールアドレスとして、自宅メールサーバを運用する。
環境
- RaspberryPi 4 model B 4GBRAM, SSD起動: SSD起動方法はこちらの記事へ
- OS: Raspberry Pi OS with desktop (bookworm) 64-bit
- 有線LAN接続(リンク速度1000Mbps):bookwormでのIPアドレス固定化のやり方はこちらの記事へ
- SSH接続で構築(Ubuntu 24.04.3 LTSから接続):SSH接続のやり方はこちらの記事へ
コマンド uname
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 6.12.34+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.34-1+rpt1~bookworm (2025-06-26) aarch64 GNU/Linux前提
本記事では、
- ラズパイにUbuntuのTerminal(端末)でSSH接続している:Terminalの記事はこちら SSH接続の記事はこちら
- ラズパイにufwをインストール・有効化済である:ufwの記事はこちら
- ラズパイのシステムユーザー:pi(sudo 権限を有している)
- ラズパイのホスト名:raspberrypi
- 構築していくメールサーバのドメイン:
mail.example.com- ご自身のドメインに置き換えてください。
- DNSサーバ:MyDNS # MyDNSでドメイン無料取得はこちらの記事へ
- Terminal(端末)の中で行数が多くなり入力しにくい場合:clear で文字を一掃してください
という前提で進んでいきます。
メールサーバ構築の手順・流れ
- DNSサーバの設定
- ドメインをSSL化(Let’s Encrypt)
- ラズパイにメールサーバ用パッケージをインストール・設定
- postfix(ポストフィクス)
- dovecot(ダヴコット)
- ポート開放
- ufw 設定
- ルータ:ポートマッピング
- 外部アクセスによる疎通確認:CMANから確認
- Gmail で送受信できるように設定
無料ドメインの取得・DNSサーバの設定
本記事では、無料でドメインを取得できたり、無料でDNSサーバを利用できるMyDNSを利用させて頂いております。
無料ドメインの取得・既に持っている独自ドメインの設定
MyDNSで無料ドメイン取得・既に持っている独自ドメインの設定は、以下の過去記事をご覧ください。
MyDNSでのDNS情報を設定
初心者の私は、このステップが随分難解でした。
2ヶ月苦しんだ結果、以下の表記では一発成功したので、今のところ大丈夫そうです。
memo ApacheやNginxなどWebサーバを構築していなくても、メールサーバは構築できます。
(例)下画像の example.com でサイトを構築していなくても、mail.example.com ホストを構築できます。
MyDNS>ログイン>DOMAIN INFO
- Domain: 所有しているドメイン、(例)example.com
- MX (FQDN): mail.example.com
- Hostname: *、ワイルドカードとして、指定のないホスト名は全てMyDNSへ通知したIPアドレスを返す。
- Type: A、IPv4アドレスのこと

certbot でドメインをSSL化
certbotとは、
Certbotは、HTTPSを有効にするために手動で管理されたWebサイトでLet’s Encrypt証明書を自動的に使用するための無料のオープンソースソフトウェアツールです。
https://certbot.eff.org/pages/about
次の手順で、メールサーバとなるドメインをSSL認証します。
- certbot インストール
- ルータでport 80 を開放
- ufw でport 80 を許可
- ドメインをSSL化
Point ルータのポートマッピングでport 80 を開放しないとcertbotが認証できないので、ご注意ください。
注意 ApacheやNginxなどWebサーバがrunningしていると、port 80 を既に使用中となり、certbotが作動できず、SSL化を失敗します。この場合、Webサーバを一時的に停止する必要があります。
sudo systemctl stop nginx #Webサーバを一時的に停止するそれでは、certbotをインストール・ドメインのSSL化を行っていきます。
1.certbotをインストール。
コマンド sudo apt update sudo apt install
sudo apt update
sudo apt install certbot2.ルータでport 80 を開放。
3.ufw でport 80 を許可。
sudo ufw allow 804.certbotによるドメインのSSL化
sudo certbot certonly --standalone -d mail.example.comこの段階では、暗号が通る道を設置したに過ぎず、暗号を交わす取り決めを設定していないため、
CMANなど外部から port 993や995等へのアクセスが出来ません。
次から2つのサービスをインストールして、メールサーバを構築します。
postfix インストール・設定
- Postfix: メール送信・転送を司るサービス 公式サイトはこちら
インストール
コマンド sudo apt install
sudo apt install postfixインストールするpostfixの説明(apt search による)
- postfix: 高性能メール配送エージェント
インストール途中、下の画面が現れます。「了解」でEnterキーを打鍵。

次に下の画面が現れます。カーソルキーで「設定なし」を選択し、tabキーを叩いて「了解」でEnterキーを打鍵。

設定
/etc/postfix 配下の3つのファイルを作成・編集し、Gmailアプリパスワードのファイルを新規作成します。
- main.cf
- master.cf
- sasl_passwd
- とにかく丁寧に
- 順序通りに進める:
- ステップをスキップしたり、順序が前後すると、「受信だけできない地獄ループ」などに苦しめられます。
/etc/postfix/main.cf
ラズパイbookwormで変更する行番号:17箇所[2]2025-09-21現在。
82, 98, 106, 127, 141, 189, 345, 449, 585, 659, 664, 669, 675, 679, 683, 688, 692
Point コメントを一括削除するやり方もありますが、不慣れな間は1行ずつ変更していくのが近道だと思います。
メールサーバを構築して、結果的に「送信だけできない」「受信だけできない」など何かしらエラーが生じると、全く解決できない事態を20回以上経験しました。
「自分が何を変更しているのか」をおぼろげながらも意識しながら作業を進めていくと、エラー遭遇ごとに進歩できるようになりました。
1.postfix ディレクトリへ移動。
pi@raspberrypi:~ $ cd /etc/postfix
pi@raspberrypi:/etc/postfix $ ls
dynamicmaps.cf makedefs.out postfix-files
dynamicmaps.cf.d master.cf postfix-files.d
master.cf.proto postfix-script
main.cf.proto post-install 2.main.cf.proto をコピーして、main.cf にファイル名を変更。
pi@raspberrypi:/etc/postfix $ sudo cp main.cf.proto main.cf3.main.cf をnanoで編集していく。
pi@raspberrypi:/etc/postfix $ sudo nano main.cfPoint nano での操作
- 行番号を表示:alt + n キーを同時にプレスで、一時的に行番号を表示。
- 指定行番号へジャンプ:ctrl + / キーを同時にプレスで、指定行番号へジャンプ。
以下は、行番号・変更後を示しています。
82行目,
mail_owner = postfix98,
myhostname = mail.example.com106,
mydomain = mail.example.com127,
mydomain = mail.example.com141,
inet_interfaces = all189,
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain345,
relayhost = [smtp.gmail.com]:587449,
home_mailbox = Maildir/585,
smtpd_banner = $myhostname ESMTP659,
sendmail_path = /usr/sbin/postfix664,
newaliases_path = /usr/sbin/newaliases669,
mailq_path = /usr/bin/mailq675,
setgid_group = postdrop679,
#html_directory =683,
#manpage_directory =688,
#sample_directory =692,
#readme_directory =最後に、以下を文末に貼り付け。
引用元:https://sukiburo.jp/mail-server-raspberry-pi2/#3-1-2
19,20行目をご自身のドメインに置き換えてください。
############
############
smtp_sasl_auth_enable = yes
smtp_tls_security_level = may
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_mechanism_filter = login plain
smtp_sasl_security_options=noanonymous
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_use_tls = yes
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destinationnano を保存して閉じます。
/etc/postfix/master.cf
1.postfixディレクトリへ移動。
pi@raspberrypi:~ $ cd /etc/postfix
pi@raspberrypi:/etc/postfix $ ls
dynamicmaps.cf makedefs.out postfix-files
dynamicmaps.cf.d master.cf postfix-files.d
main.cf master.cf.proto postfix-script
main.cf.proto post-install2.master.cf を編集。
master.cf.proto がインストール時に備わっているため、master.cf のバックアップは不要と思われます。
コマンド sudo
pi@raspberrypi:/etc/postfix $ sudo nano master.cfsubmission と submissions の以下のハイライト部分をコメント解除・変更[3]参考サイト:メールサーバー|Ubuntu 22.04サーバー構築入門, Zenn, 2025-09-21閲覧。。
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=yes
-o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# here, and specify mua_<xxx>_restrictions in main.cf (where
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATINGsubmissions inet n - y - - smtpd
-o syslog_name=postfix/submissions
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# here, and specify mua_<xxx>_restrictions in main.cf (where
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATINGGmail SMTP認証
- 参考サイト:PostfixからGmail経由でメールを送信するための設定メモ| あぱーブログ, 2025-09-21閲覧
注意 順序を間違えないでください。
ファイル作成のタイムスタンプが前後すると、エラーになります。
1.以下のページで表示される、Googleから付与された16桁のアプリパスワードをコピーします。
2.以下のファイルをnanoで新規作成します[4]ファイル名は任意のようですが、sukiburo様に合わせています。。
コマンド sudo
pi@raspberrypi:/etc/postfix $ sudo nano sasl_passwd[smtp.gmail.com]:587 example@gmail.com:XXXXXXXXXXXXXXXX #16桁のパスワード, スペース無し3.nano閉じて保存。
4.所有者とroot以外がファイルにアクセスできないように権限変更。
pi@raspberrypi:/etc/postfix $ sudo chmod 600 sasl_passwd5.postfix 検索テーブルを作成。
pi@raspberrypi:/etc/postfix $ sudo postmap sasl_passwd6.注意 以下のように、sasl_passwd.dbのほうがsasl_passwdよりも後に作成されないと、エラーが生じます。
例えば、アプリパスワードを2回目に取得して、sasl_passwdは変更したがpostmapをし忘れた場合、エラーが生じます。
コマンド ls
pi@raspberrypi:/etc/postfix $ ls -l
−−略−−
-rw------- 1 root root 60 9月 10 09:06 sasl_passwd
-rw------- 1 root root 12288 9月 10 09:09 sasl_passwd.dbpostfix チェック
このチェックはとても大事です。スキップしないでください。不慣れなうちは、結構な頻度でエラーが生じます。
コマンド sudo
sudo postfix checkエラーが生じなければ、postfixを開始。有効化。ステータスを確認。
sudo systemctl start postfix
sudo systemctl enable postfix
sudo systemctl status postfixQキーを打鍵して抜けます。
dovecot インストール・設定
- Dovecot: 受信を司るサービス 公式サイトはこちら
インストール
コマンド sudo apt install
sudo apt install dovecot-core dovecot-imapd dovecot-pop3dインストールする3つのパッケージの説明(apt search による)
- dovecot-core: secure POP3/IMAP server – core files
- dovecot-imapd: secure POP3/IMAP server – IMAP daemon
- dovecot-pop3d: secure POP3/IMAP server – POP3 daemon
設定
5つのファイルを変更します。
- /etc/dovecot/dovecot.conf: IPv4, IPv6 どちらにも対応する設定にする。
- /etc/dovecot/conf.d
- 10-master.conf: 暗号認証ポートの設定
- 10-auth.conf: 平文認証不可の設定
- 10-mail.conf: メール格納フォーマットの設定[5]出典:DovecotによるPOP3, IMAPサーバーの構築|Docker ComposeによるMisskeyサーバー構築 ~メールを送るまで~, Zenn, 2025-09-22閲覧。
- 10-ssl.conf: SSL/TLS 認証の設定
/etc/dovecot/dovecot.conf
- Point IPv4, IPv6 すべての接続からポートへのアクセスに対し、リスンする設定をします。
1.dovecotディレクトリへ移動。
pi@raspberrypi:~ $ cd /etc/dovecot
pi@raspberrypi:/etc/dovecot $ ls
conf.d dovecot-dict-sql.conf.ext dovecot.conf
dovecot-dict-auth.conf.ext dovecot-sql.conf.ext private2.dovecot.conf をバックアップ。
pi@raspberrypi:/etc/dovecot $ sudo cp dovecot.conf dovecot.conf.bak3.dovecot.conf をnanoで編集。
コマンド sudo
pi@raspberrypi:/etc/dovecot $ sudo nano dovecot.conf30行目, コメント解除するために #を削除。
listen = *, ::/etc/dovecot/conf.d/10-master.conf
- Point 暗号認証するためのポートを設定します。
1./etc/dovecot/conf.d ディレクトリへ移動。
pi@raspberrypi:~ $ cd /etc/dovecot/conf.d
pi@raspberrypi:/etc/dovecot/conf.d $ ls
10-auth.conf 15-mailboxes.conf auth-dict.conf.ext
10-director.conf 20-imap.conf auth-master.conf.ext
10-logging.conf 20-pop3.conf auth-passwdfile.conf.ext
10-mail.conf 90-acl.conf auth-sql.conf.ext
10-master.conf 90-plugin.conf auth-static.conf.ext
10-ssl.conf 90-quota.conf auth-system.conf.ext
10-tcpwrapper.conf auth-checkpassword.conf.ext
15-lda.conf auth-deny.conf.ext2.10-master.conf を バックアップ。バックアップされたファイルを確認。
pi@raspberrypi:/etc/dovecot/conf.d $ sudo cp 10-master.conf 10-master.conf.bak
pi@raspberrypi:/etc/dovecot/conf.d $ ls
10-auth.conf 15-lda.conf auth-deny.conf.ext
10-director.conf 15-mailboxes.conf auth-dict.conf.ext
10-logging.conf 20-imap.conf auth-master.conf.ext
10-mail.conf 20-pop3.conf auth-passwdfile.conf.ext
10-master.conf 90-acl.conf auth-sql.conf.ext
10-master.conf.bak 90-plugin.conf auth-static.conf.ext
10-ssl.conf 90-quota.conf auth-system.conf.ext
10-tcpwrapper.conf auth-checkpassword.conf.ext3.10-master.conf を nano で編集。
pi@raspberrypi:/etc/dovecot/conf.d $ sudo nano 10-master.conf19行目
17 service imap-login {
18 inet_listener imap {
19 port = 0
20 }22, 23行目
21 inet_listener imaps {
22 port = 993
23 ssl = yes
24 }40行目
38 service pop3-login {
39 inet_listener pop3 {
40 port = 0
41 }43,44行目
42 inet_listener pop3s {
43 port = 995
44 ssl = yes
45 }
46 }100〜104行目:# でコメントアウト。
100 #unix_listener auth-userdb {
101 #mode = 0666
102 #user =
103 #group =
104 #}107〜111行目
107 unix_listener /var/spool/postfix/private/auth {
108 mode = 0666
109 user = postfix
110 group = postfix
111 }/etc/dovecot/conf.d/10-auth.conf
- Point 平文認証を不可にする設定をします。
1.10-auth.conf をバックアップ。
pi@raspberrypi:/etc/dovecot/conf.d $ sudo cp 10-auth.conf 10-auth.conf.bak2.nano で編集します。
コマンド sudo
pi@raspberrypi:/etc/dovecot/conf.d $ sudo nano 10-auth.conf10行目:# を削除し、コメント解除。
5 # Disable LOGIN command and all other plaintext authentications unless
6 # SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
7 # matches the local IP (ie. you're connecting from the same computer), the
8 # connection is considered secure and plaintext authentication is allowed.
9 # See also ssl=required setting.
10 disable_plaintext_auth = yes100行目:login を追記[6]本記事では、Gmailサーバからの認証のみのため不要かもしれませんが、念の為追記しています。
96 # Space separated list of wanted authentication mechanisms:
97 # plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp
98 # gss-spnego
99 # NOTE: See also disable_plaintext_auth setting.
100 auth_mechanisms = plain loginnano を保存して閉じる。
/etc/dovecot/conf.d/10-mail.conf
- Point メール格納形式を設定します。
1.10-mail.conf をバックアップ。
pi@raspberrypi:/etc/dovecot/conf.d $ sudo cp 10-mail.conf 10-mail.conf.bak2.nano で編集します。
pi@raspberrypi:/etc/dovecot/conf.d $ sudo nano 10-mail.conf30行目
28 # <doc/wiki/MailLocation.txt>
29 #
30 mail_location = maildir:~/Maildir/etc/dovecot/conf.d/10-ssl.conf
- Point SSL/TLSの設定をします。
1.10-ssl.conf をバックアップ。
pi@raspberrypi:/etc/dovecot/conf.d $ sudo cp 10-ssl.conf 10-ssl.conf.bak2.nano で編集します。
pi@raspberrypi:/etc/dovecot/conf.d $ sudo nano 10-ssl.conf6行目:# を削除し、コメント解除。
5 # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
6 ssl = yes12,13行目:ご自身のメールサーバのドメインに変更。
8 # PEM encoded X.509 SSL/TLS certificate and private key. They're opened befo>
9 # dropping root privileges, so keep the key file unreadable by anyone but
10 # root. Included doc/mkcert.sh can be used to easily generate self-signed
11 # certificate, just make sure to update the domains in dovecot-openssl.cnf
12 ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
13 ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pemdovecotサービスを再起動
設定を反映させるために再起動。有効化。ステータスを確認。
sudo systemctl restart dovecot
sudo systemctl enable dovecot
sudo systemctl status dovecotQキー打鍵で抜けます。
sudo newaliases
- 参考サイト:メールサーバー | Ubuntu 22.04サーバー構築入門, Zenn, 2025-09-21閲覧。
newaliases は、 /etc/mail/aliases ファイルに記述されているメール エイリアスのデータベースを再構築します。 /etc/mail/aliases の内容を変更したときには、その内容を反映させるために、 このコマンドを実行しなければなりません。
newaliases は、 “sendmail -bi” とまったく同じです。
https://manpages.debian.org/trixie/manpages-ja/newaliases.1.ja.html
注意 この工程はとても大事です。このコマンドを見過ごすと、以下のようなエラーが 、
/var/log/mail.err に表示されました。
postfix/smtpd[8828]: error: open database /etc/aliases.db: No such file or directory
以下のコマンドを実行すると、正常にメール送受信できました。
コマンド sudo newaliases
sudo newaliases失敗数をできるだけ減らしたいため、私は念の為、postfix もここで再起動することにしています。
sudo systemctl restart postfix
sudo systemctl status postfixsudo ufw allow
- 関連記事 ラズパイでufwの設定
1.port 25, 465, 587, 993, 995 を ufw で許可します[7]ポート開放の数が多すぎてご不安な場合は、465, 993 を省いてください。Gmail 設定では基本的に、587, 995 を使用します。。
sudo ufw allow 25 #他のportも同様に2.ルータでポートを開放します。
3.CMAN による外部アクセス疎通でポートチェック。
下記にアクセスして、mail.example.comおよびport番号を入力し、アクセス疎通できるかを確認。
全てのポートにアクセスできればOK[8]厳密には、port 587 でGmail smtpサーバに設定できれば port 465 … Continue reading。
アクセスできなければ、これまでの工程を見直します。
エラーがあるまま進んでも、
Gmail リレー経由のメール送受信はできません。
memo 私の経験では、このステップで躓く頻度がかなり高く、何度もメールサーバ構築やり直しました。
全てのポートが青文字でOKなら、次へ進みます。
mail送受信用のユーザーを作成
- Point Gmailサーバ経由するためのラズパイシステムユーザーを作成。
sudo 権限を有しないラズパイユーザーを作成します。例:ここでは info という名前のユーザー。
万が一、ユーザーのパスワードが漏洩しても、ラズパイ乗っ取りを避けるために、
非特権ユーザーとします。
1.非特権ユーザーを作成。パスワードを設定。
sudo adduser info2.作成したユーザーごとにメールが保管されるディレクトリを作成[9]出典:Azure/Ubuntu にインストールした postfix / dovecot を Maildir 対応にする, Qiita, 2025-09-22閲覧。。
コマンド mkdir
sudo mkdir -p /etc/skel/Maildir/{new, cur, temp}3.所有者とrootだけがファイル操作(read, write, execute)できるように、ディレクトリ権限を変更。
コマンド chmod
sudo chmod -R 700 /etc/skel/Maildir/Gmailで送受信の設定
Gmail サーバで受信の設定
1.リモート操作を行っているPCブラウザからGmailを開きます。
2.右上隅の設定(ギヤマーク)をクリック>すべての設定を表示

3.設定>アカウントとインポート>他のアカウントのメールを確認>メールアカウントを追加する

4.メールアドレスを入力。
本記事では、info@example.com

5.pop3を選択して、次へ。

6.Gmailで受信する設定の最終工程です。

この段階でエラーが生じれば、これまでのメールサーバ構築作業を見直します。
このまま進んでもGmailでの暗号認証受信はできません[10]厳密には、他のportで受信できるかもしれませんが、せっかくここまで設定しているので、きっちりと暗号認証できる結果が望ましいと思います。。
エラーが生じた場合は、後述しています。
問題ない場合は、次へ進みます。
Gmail サーバで送信の設定
1.設定>アカウントとインポート>名前>他のメールアドレスを追加

2.ご自身のお名前(日本語またはローマ字)、メールアドレス(本記事では、info@example.com)、エイリアスにチェックを入れて、次へ。

3.SMTPサーバを設定します。

アカウントを追加ボタンをクリックして、エラーが発生するとこれまでの作業を見直します。
エラーが生じた場合は、後述しています。
問題ない場合は、Gmailで送受信のテストを行います。
注意
Gmailには問題なくアカウントやメールアドレスを追加できても、「受信だけできない」事象を複数回経験しました。
Gmail送受信のテスト確認はとても大事です。
Gmail で送受信のテスト確認
1.ご自身が所有するPCやスマホのメールアドレスから、info@example.com 宛にメールを送信し、Gmailまで届くのかを確認します。
2.Gmail からご自身が所有するPCやスマホのメールアドレスへ送信し、メールが到達できるのかを確認します。
送信元メールアドレスの変更は、赤枠部分でできます。

送受信どちらも問題なければ、ラズパイでのメールサーバ構築は完了です。
メールサーバ構築後、1日1回、再起動
- 関連記事 crontab -e
cron を使って、寝ている間に自動でアップデート・アップグレード・再起動(リブート)する設定にしておくと、ラズパイがリフレッシュされ、メールサーバ運用面で安定度が高まる、と思います。
sudo crontab -e(例)毎日、午前3時にアップデート・アップグレード、午前3時30分にリブート。
00 03 * * * sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y &&>
30 03 * * * /sbin/rebootここから下の内容は、メールサーバ構築で必須ではなく、オプショナルな内容です。
ログの出力先を変更・ログローテーションの変更
- 引用元:https://blog.apar.jp/linux/3979/#toc13, あぱーブログ, 2025-09-29閲覧。
私自身のメモとして残したいため、上記サイト様よりほとんど引用させて頂いております。
なぜ変更するのか?
- 結論 不要・無駄なログデータをストレージに溜めず、早期に処分したい
頻繁に不正ログイン試行を受けると、1日のログ量が多くなり、/var/log/mail.log を開くだけでも重い、という経験をしました。
無駄にゴミのようなデータが増えます。
(例)mail.log.2 のファイル容量が約1.9MB(1924KB)。5行目。ゴミデータの塊。
コマンド ls
pi@raspberrypi:/var/log $ ls -s
(略)
0 mail.log
4 mail.log.1
1924 mail.log.2
52 mail.log.3.gz
16 mail.log.4.gzそこで、ログデータをどのように扱えばよいのかを調べていたところ、あぱーブログ様に辿り着きました。
あぱーブログ様のページで初めて知ったのは、
/etc/logrotate.d
というディレクトリの存在でした。
自分でログ出力先や保存期間をコントロールできれば融通が効くので、
気持ちが楽になりました。
同時に、ufw.log や cron.log などのログファイルの出力先や保存期間の変更・設定にも、
同じ要領の手順であるのを知り、
とても勉強になりました。
dovecot ログの出力先を変更
1.10-logging.conf をバックアップ。
sudo cp /etc/dovecot/conf.d/10-logging.conf /etc/dovecot/conf.d/10-logging.conf.bak2.nano で編集。
sudo nano /etc/dovecot/conf.d/10-logging.conf7行目を変更。
5 # Log file to use for error messages. "syslog" logs to syslog,
6 # /dev/stderr logs to stderr.
7 log_path = /var/log/dovecot/dovecot.log3.ログの出力先ディレクトリ作成。
コマンド mkdir
sudo mkdir /var/log/dovecot4.dovecot 起動、自動起動。
sudo systemctl start dovecot
sudo systemctl enable dovecot5.認証ソケットファイルの確認。
コマンド ls
sudo ls -F /var/spool/postfix/private/auth以下のように表示されればOK。
/var/spool/postfix/private/auth=
mail.log ログの出力先を変更
1.出力先ディレクトリの作成。
sudo mkdir /var/log/mail2.rsyslog.conf のバックアップ。
コマンド cp
sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.bak3.出力先の変更。nano で編集。
sudo nano /etc/rsyslog.conf63行目を変更。
58 # Log commonly used facilities to their own log file
59 #
60 auth,authpriv.* /var/log/auth.log
61 cron.* -/var/log/cron.log
62 kern.* -/var/log/kern.log
63 mail.* -/var/log/mail/mail.log
64 user.* -/var/log/user.log4.syslog 再起動。
sudo systemctl restart rsyslog4.デフォルトの設定をコメントアウト。
sudo nano /etc/logrotate.d/rsyslog2行目の行頭に # 。
1 /var/log/syslog
2 #/var/log/mail.log
3 /var/log/kern.log
4 /var/log/auth.log
5 /var/log/user.log
6 /var/log/cron.logログローテーションの変更・設定
dovecot のログローテーション
1.nano でファイルを新規作成。
sudo nano /etc/logrotate.d/dovecot2.以下を貼り付け。(例)1日ごとにログファイルを作成。保存期間4日。
/var/log/dovecot/dovecot.log {
daily
missingok
dateext
rotate 4
sharedscripts
postrotate
/bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null` 2> /dev/null || true
endscript
}3.確認。
sudo logrotate -dv /etc/logrotate.d/dovecot以下のような表示が出ればOK。
rotating pattern: /var/log/dovecot/dovecot.log after 1 days (4 rotations)
empty log files are rotated, old logs are removed
postfix ログローテーションの変更・設定
1.nano でファイルを新規作成。
sudo nano /etc/logrotate.d/mail.log2.以下を貼り付け。(例)1日ごとにログファイルを作成。保存期間4日。
/var/log/mail/mail.log {
daily
missingok
dateext
rotate 4
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || >
endscript
}3.確認。
sudo logrotate -dv /etc/logrotate.d/mail.log以下のような表示が出ればOK。
rotating pattern: /var/log/mail/mail.log after 1 days (4 rotations)
empty log files are rotated, old logs are removed
送受信がうまく出来ない。エラーとなる
Point 以下のコマンドでメールログを参照し、error の単語から解決となるヒントを探ってみてください。
sudo cat /var/log/mail.err私の場合は、ほとんどのケースで、
- Gmail smtpサーバー → mail.example.com サーバの間でpop3認証できずに接続不可となるエラー
でした。
Gmail smtpサーバ利用上のルール
Googleのメールサーバが、
- 悪意あるユーザーによって踏み台にされる
- スパムメール送信の温床となる
というような使い方を防止するために、ガイドラインが設けられています。
迷惑行為とならないように、留意しながら利用しております。
本記事のコンテンツは以上です。
お役に立てれば嬉しく思います。
脚注
| ↵1 | ラズパイのTDP3.4W, 全国家庭電気製品公正取引協議会が目安として定めている電力料金単価を31円/kWhとした場合、(3.4W÷1000)☓31円/kWh☓24時間☓30日≒75.9円。 |
|---|---|
| ↵2 | 2025-09-21現在。 |
| ↵3 | 参考サイト:メールサーバー|Ubuntu 22.04サーバー構築入門, Zenn, 2025-09-21閲覧。 |
| ↵4 | ファイル名は任意のようですが、sukiburo様に合わせています。 |
| ↵5 | 出典:DovecotによるPOP3, IMAPサーバーの構築|Docker ComposeによるMisskeyサーバー構築 ~メールを送るまで~, Zenn, 2025-09-22閲覧。 |
| ↵6 | 本記事では、Gmailサーバからの認証のみのため不要かもしれませんが、念の為追記しています。 |
| ↵7 | ポート開放の数が多すぎてご不安な場合は、465, 993 を省いてください。Gmail 設定では基本的に、587, 995 を使用します。 |
| ↵8 | 厳密には、port 587 でGmail smtpサーバに設定できれば port 465 は不要になりますが、587で設定成功しない場合、465で代用可能となります。そのため、念入りに「全てのポート」と表現しています。 |
| ↵9 | 出典:Azure/Ubuntu にインストールした postfix / dovecot を Maildir 対応にする, Qiita, 2025-09-22閲覧。 |
| ↵10 | 厳密には、他のportで受信できるかもしれませんが、せっかくここまで設定しているので、きっちりと暗号認証できる結果が望ましいと思います。 |



コメント