$ sudo apt install postfix
$ postconf | grep mail_version
mail_version = 3.6.4
milter_macro_v = $mail_name $mail_version
設定ファイル /etc/postfix/main.cf
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = ec2-54-249-13-56.ap-northeast-1.compute.amazonaws.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $myhostname
mydestination = localhost
relayhost =
mynetworks_style = host
# mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = localhost
inet_protocols = all
smtp_host_lookup = native
メールサーバが mail.example.com の場合を例に記載します。 あくまで参考までの設定例であり環境に応じて変わります。
まずはmyhostnameという設定を探しましょう。 ドキュメントにはPostfixをインストールしたマシンの完全修飾ドメイン名(いわゆるFQDN)を指定する、とあります。
ref. https://tech-blog.rakus.co.jp/entry/20220815/postfix
FQDN
を設定するFQDN
を表すホスト名のタイプ
(プライベート IP DNS名(IPv4のみ)
と同じ)の値になるref.
myorigin パラメータにはローカルで 投函されたメールがどのドメインから来るように見えるかを指定します。 デフォルトではローカルマシン名、すなわちマシン名がデフォルトになっている $myhostname を使います。非常に小さな サイトを運営しているのでなければ、マシン名の親ドメインがデフォルトに なっている $mydomain に変更したく なるでしょう。
ref. https://www.postfix-jp.info/trans-2.2/jhtml/BASIC_CONFIGURATION_README.html
mydestination パラメータには、 このマシンが他のマシンに転送せずにローカルに配送するドメインを指定します。 デフォルトではマシン自身に対するメールを受け取ります。 ホスティングしているドメイン 用に Postfix を設定する方法は VIRTUAL_README ファイルを参照してください。
ref. https://www.postfix-jp.info/trans-2.2/jhtml/BASIC_CONFIGURATION_README.html
新規に追加しました。
$ sudo mkdir -p /etc/skel/Maildir/{new,cur,tmp}
$ chmod -R 700 /etc/skel/Maildir/
デフォルトとの差分表示。
$ sudo postconf -n
設定ファイルチェック
$ sudo postfix check
$ sendmail -t <<EOL
> From: info@example.com
> To:info@example.org
> Subject: test
> test mail
> EOL
$ sudo apt install mailutils
$ echo "test mail" | sudo mail -s "test subject" -r "info@example.com" info@example.org
※ https://blog.denet.co.jp/ec2-postfix-dovecot-mail-server-setup/ がとてもわかり易いので参考に作業しました。
$ sudo apt install -y postfix
$ postconf | grep mail_version
mail_version = 3.6.4
milter_macro_v = $mail_name $mail_version
sudo systemctl status postfix.service
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2023-09-11 15:33:35 JST; 2min 35s ago
Docs: man:postfix(1)
Process: 3398 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 3398 (code=exited, status=0/SUCCESS)
CPU: 1ms
Sep 11 15:33:35 xxxxxx systemd[1]: Starting Postfix Mail Transport Agent...
Sep 11 15:33:35 xxxxxx systemd[1]: Finished Postfix Mail Transport Agent.
バックアップを作成します。
$ sudo cp /etc/postfix/main.cf{,.$(date "+%Y%m%d")}
設定ファイル: /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
myorigin=example.com
myhostname=example.com
mydomain=example.com
# smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_banner = $myhostname ESMTP unknown
biff = no
# appending .domain is the MUA's job.
# append_dot_mydomain = no
append_dot_mydomain = yes
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 3.6 on
# fresh installs.
compatibility_level = 3.6
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
# myhostname = ip-xxxxx.ap-northeast-1.compute.internal
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# myorigin = /etc/mailname
mydestination = $myhostname, ip-10-0-0-100.ap-northeast-1.compute.internal, localhost.ap-northeast-1.compute.internal, $mydomain, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
新規に追加しました。
home_mailbox = Maildir/
$ sudo mkdir -p /etc/skel/Maildir/{new,cur,tmp}
$ chmod -R 700 /etc/skel/Maildir/
$ sudo adduser mail-example
※ Ubuntu(やDebian)は adduser
と useradd
は機能が異なります。useradd
はホームディレクトリの作成などをしません。
※ Ubuntu(やDebian)はdeluser
と userdel
は機能が異なります。
$ userdel ユーザー名 // ユーザーを削除
$ userdel -r ユーザー名 //ユーザーのホームディレクトリも削除
$ deluser --remove-home ユーザー名 // ↑と同じ
$ sudo gpasswd -a mail-example adm
$ sudo gpasswd -a mail-example sudo
ubuntu でログイン
echo "test mail" | sudo mail -s "test subject" -r "ubuntu@example.com" mail-example@example.com
/home/mail-example/Maildir/new
にメールが届く。
sshd でパスワード認証を有効化します。
sudo vim /etc/ssh/sshd_config
- PasswordAuthentication no
+ Match User mail-example
+ PasswordAuthentication yes