LinuC レベル2
技術解説セミナー
電⼦メールサービスの仕組み

2022/08/07（Sun） 13:00-14:15
LPI-Japanプラチナスポンサー 株式会社ゼウス・エンタープライズ
鯨井 貴博（LinuCエヴァンジェリスト）© LPI-Japan / EDUCO all rights reserved.

Who are you?（講師紹介）
鯨井貴博

LPI-Japan プラチナスポンサー
LinuCエヴァンジェリスト

株式会社ゼウス・エンタープライズ

Linuxとの出会い

⼤学時代 Unixの存在を知り、⽇経Linuxを読み始める。
2000年にVine Linux 2.0で⼀度挫折を経験。
その悔しさを忘れきれず、2007年 他業種からIT業界に転職しLinuxに再チャレンジ。
SE・商⽤製品サポート・インストラクター・プロジェクト管理などを経験し、現在に⾄る。
⾃分⾃⾝が学習で苦労した経験から、初⼼者を含む受講者に分りやすい講義を⾏うように⼼がけている。
また、興味の向くIT技術・オープンソースソフトウェアなどについて、Opensourcetehブログ（https://www.opensourcetech.tokyo/）で執筆中。
実際に⾃分でやってみる/使ってみる・開発者本⼈から話を聞いてみることを⼤切にしています。

Linus Torvaldsさん(Linux開発者)

Igor Sysoevさん(nginx開発者)

Alexei Vladishevさん(Zabbix開発者)© LPI-Japan / EDUCO all rights reserved.

2

ゼウス・エンタープライズからのお知らせ
提供するITサービス

https://www.zeus-enterprise.co.jp/solution/service/© LPI-Japan / EDUCO all rights reserved.

3

ゼウス・エンタープライズからのお知らせ
⼩学⽣向けプログラミング教室

https://www.it-training.tokyo/kids/index.html© LPI-Japan / EDUCO all rights reserved.

4

ゼウス・エンタープライズからのお知らせ
貸し会議室

https://www.zeus-enterprise.co.jp/ikebukuro_office/https://ginza168.tokyo/© LPI-Japan / EDUCO all rights reserved.

5

アジェンダ
1. LinuCについて- 試験概要と特徴

2.

技術解説

3.

Appendix

4.

Q&A

電⼦メールサービスの仕組み
主題2.10︓電⼦メールサービス- 2.10.1 Postfixの設定と管理- 2.10.2 Dovecotの設定と管理© LPI-Japan / EDUCO all rights reserved.

6

本⽇のゴールØ

電⼦メールサービスの仕組みを理解するØ

Postfixの設定⽅法を理解するØ

Dovecotの設定⽅法を理解する© LPI-Japan / EDUCO all rights reserved.

7

技術解説

LinuC について

© LPI-Japan / EDUCO all rights reserved.

8LinuCレベル１／レベル２ Version10.0とは

nLinuCとは
クラウド時代の即戦⼒エンジニアであることを証明するLinux技術者認定

ü現場で「今」求められている新しい技術要素に対応• オンプレミス／仮想化・コンテナを問わず様々な環境下でのサーバー構築• 他社とのコラボレーションの前提となるオープンソースへの理解• システムの多様化に対応できるアーキテクチャへの知⾒ü全⾯的に⾒直した「今」⾝につけておくべき技術範囲を網羅
今となっては使わない技術やコマンドの削除、アップデート、新領域の取り込みüLinuxの範疇だけにとどまらない領域までカバー
セキュリティや監視など、ITエンジニアであれば必須の領域もカバー© LPI-Japan / EDUCO all rights reserved.

9

クラウドを活⽤できるITエンジニアに必須の技術がまとまっている
AWSなどのパブリッククラウドを活⽤するための技術

AWSなどのパブリッククラウドを活⽤するための技術

間が
⽋けて
いる状態

仮想マシン／コンテナ技術、クラウドセキュリティ、
アーキテクチャ、ほか

オンプレミスのサーバーサイドLinux技術

オンプレミスのサーバーサイドLinux技術【今まで／その他】

Version10.0© LPI-Japan / EDUCO all rights reserved.

10LinuC Level1試験
101試験

102試験

1.01︓Linuxのインストールと仮想マシン・コンテナの利⽤
1.01.1Linuxのインストール、起動、接続、切断と停⽌
1.01.2仮想マシン・コンテナの概念と利⽤
1.01.3ブートプロセスとsystemd
1.01.4プロセスの⽣成、監視、終了
1.01.5デスクトップ環境の利⽤
1.02︓ファイル・ディレクトリの操作と管理
1.02.1ファイルの所有者とパーミッション
1.02.2基本的なファイル管理の実⾏
1.02.3ハードリンクとシンボリックリンク
1.02.4ファイルの配置と検索
1.03︓GNUとUnixのコマンド
1.03.1コマンドラインの操作
1.03.2フィルタを使ったテキストストリームの処理
1.03.3ストリーム、パイプ、リダイレクトの使⽤
1.03.4正規表現を使⽤したテキストファイルの検索
1.03.5エディタを使った基本的なファイル編集の実⾏
1.04︓リポジトリとパッケージ管理
1.04.1apt コマンドによるパッケージ管理
1.04.2Debianパッケージ管理
1.04.3yumコマンドによるパッケージ管理
1.04.4RPMパッケージ管理
1.05︓ハードウェア、ディスク、パーティション、ファイルシステム
1.05.1ハードウェアの基礎知識と設定
1.05.2ハードディスクのレイアウトとパーティション
1.05.3ファイルシステムの作成と管理、マウント
https://linuc.org/linuc1/range/101.html
https://linuc.org/linuc1/range/102.html

1.06︓シェルおよびスクリプト
1.06.1シェル環境のカスタマイズ
1.06.2シェルスクリプト
1.07︓ネットワークの基礎
1.07.1インターネットプロトコルの基礎
1.07.2基本的なネットワーク構成
1.07.3基本的なネットワークの問題解決
1.07.4クライアント側のDNS設定
1.08︓システム管理
1.08.1アカウント管理
1.08.2ジョブスケジューリング
1.08.3ローカライゼーションと国際化
1.09︓重要なシステムサービス
1.09.1システム時刻の管理
1.09.2システムのログ
1.09.3メール配送エージェント(MTA)の基本
1.10︓セキュリティ
1.10.1セキュリティ管理業務の実施
1.10.2ホストのセキュリティ設定
1.10.3暗号化によるデータの保護
1.10.4クラウドセキュリティの基礎
1.11︓オープンソースの⽂化
1.11.1オープンソースの概念とライセンス
1.11.2オープンソースのコミュニティとエコシステム© LPI-Japan / EDUCO all rights reserved.

11

LinuC Level2試験
201試験

2.01︓システムの起動とLinuxカーネル
2.01.1 ブートプロセスとGRUB
2.01.2 システム起動のカスタマイズ
2.01.3 Linux カーネルの構成要素
2.01.4 Linuxカーネルのコンパイル
2.01.5 カーネル実⾏時における管理とトラブルシューティング
2.02︓ファイルシステムとストレージ管理
2.02.1 ファイルシステムの設定とマウント
2.02.2 ファイルシステムの管理
2.02.3 論理ボリュームマネージャの設定と管理
2.03︓ネットワーク構成
2.03.1 基本的なネットワーク構成
2.03.2 ⾼度なネットワーク構成
2.03.3 ネットワークの問題解決
2.04︓システムの保守と運⽤管理
2.04.1 makeによるソースコードからのビルドとインストール
2.04.2 バックアップとリストア
2.04.3 ユーザへの通知
2.04.4 リソース使⽤状況の把握
2.04.5 死活監視、リソース監視、運⽤監視ツール
2.04.6 システム構成ツール
2.05︓仮想化サーバー
2.05.1 仮想マシンの仕組みとKVM
2.05.2 仮想マシンの作成と管理
2.06︓コンテナ
2.06.1 コンテナの仕組み
2.06.2 Dockerコンテナとコンテナイメージの管理
https://linuc.org/linuc2/range/201.html
https://linuc.org/linuc2/range/202.html

202試験

2.07︓ネットワーククライアントの管理
2.07.1 DHCPサーバーの設定と管理
2.07.2 PAM認証
2.07.3 LDAPクライアントの利⽤⽅法
2.07.4 OpenLDAPサーバーの設定
2.08︓ドメインネームサーバー
2.08.1 BINDの設定と管理
2.08.2 ゾーン情報の管理
2.08.3 セキュアなDNSサーバーの実現
2.09︓HTTPサーバーとプロキシサーバー
2.09.1 Apache HTTPサーバーの設定と管理
2.09.2 OpenSSLとHTTPSの設定
2.09.3 nginxの設定と管理
2.09.4 Squidの設定と管理
2.10︓電⼦メールサービス
2.10.1 Postfixの設定と管理
2.10.2 Dovecotの設定と管理
2.11︓ファイル共有サービス
2.11.1 Sambaの設定と管理
2.11.2 NFSサーバーの設定と管理
2.12︓システムのセキュリティ
2.12.1 iptables や firewalld によるパケットフィルタリング
2.12.2 OpenSSH サーバーの設定と管理
2.12.3 OpenVPNの設定と管理
2.12.4 セキュリティ業務
2.13︓システムアーキテクチャ
2.13.1 ⾼可⽤システムの実現⽅式
2.13.2 キャパシティプランニングとスケーラビリティの確保
2.13.3 クラウドサービス上のシステム構成
2.13.4 典型的なシステムアーキテクチャ© LPI-Japan / EDUCO all rights reserved.

12LinuC 学習のコツ①出題範囲の内容について調べてみる
公式ドキュメント・技術書など②実際に操作してみる
これが⼤事︕③学習の補助教材などを利⽤する・メールマガジン
・標準教科書・過去のセミナー資料
詳細は、https://lpi.or.jp/learning/

LPI-Japan LinuC通信「レベル2・レベル3を受けてみよう︕」でサンプル問題作ってるので、よかったら登録
してください︕© LPI-Japan / EDUCO all rights reserved.

13

LinuC 学習のコツ④過去セミナーの動画
https://www.youtube.com/user/LPIJapan© LPI-Japan / EDUCO all rights reserved.

14

LinuC 学習のコツ
学習の具体的な進め⽅(2~3か⽉程度)
試験範囲の確認(LinuC HP)●月頃、受験しようという目標を立てる↓
LinuC認定教材の購⼊・1週⽬読込 https://lpi.or.jp/linuc1/book.shtml
https://lpi.or.jp/linuc2/book.shtml↓
LinuC認定教材・Webサイトを参考に、実機操作(サーバ構築やコマンド操作)を試す※操作やトラブルシュートで⼒が⾝に付く︕
1ヶ⽉↓
LinuC認定教材 2週⽬読込●月●日頃、受験しようと決める↓問題集やメルマガサンプル問題で理解⼒確認 https://linuc.org/study/samples/※理解不⾜箇所の洗い出し↓
LinuC認定教材 3週⽬
2ヶ⽉※弱点の補強↓仕上げ
受験申込
受験日の変更も可能なので安心(80%)↓
問題を8~9割以上、正解となるまで繰り返し解く
苦⼿な部分を重点的に復習・受験まで継続して学習すること↓
2.5ヶ⽉
・繰り返し学習し、理解度/問題正解率を⾼めた状態で受験すること完全に理解した︕ 受験© LPI-Japan / EDUCO all rights reserved.
(100%)
学習開始(0%)

15

技術解説

電⼦メールサービスの仕組み（主題2.10︓電⼦メールサービス）© LPI-Japan / EDUCO all rights reserved.

16

技術解説
2.10.1 Postfixの設定と管理
重要度

3

概要
電⼦メールサーバーを管理できる。
これには、電⼦メールのエイリアス、アクセス制限、仮想ドメインの設定も含まれる。
また、内部的な電⼦メールリレーの設定および電⼦メールサーバーの監視も含まれる。
詳細
Postfixの設定ファイル、スプール、ログファイル/etc/postfix/, /etc/aliases, /var/spool/postfix/, /var/log/のメール関連のログ
Postfixの基本的な TLS の設定
SMTP認証の設定
SMTPプロトコルに関する基本的な知識
eximを知っている。

© LPI-Japan / EDUCO all rights reserved.

17

技術解説
2.10.2 Dovecotの設定と管理
重要度

2

概要
POPおよびIMAPのデーモンのインストールと設定ができる。
詳細
Dovecot の POP と IMAP の設定と管理/etc/dovecot/, dovecot.conf , doveconf, doveadm
Dovecot 向けの基本的な TLS の設定© LPI-Japan / EDUCO all rights reserved.

18

技術解説

電⼦メールサービスの仕組み© LPI-Japan / EDUCO all rights reserved.

19

電⼦メールサービスの仕組み
前提︓DNSでドメイン名やメールサーバ情報(MXレコードなど)が管理されていること
xxxx@opensourcetech.tokyo
利⽤するドメインを取得済みである

DNSサーバ

DNSサーバでドメインに関するレコード(MX、Aなど)が管理されていること

なお、DNSサーバについては以下の技術解説セミナーで解説しているのでそちらをご覧ください︕
https://linuc.org/study/seminar/3317/© LPI-Japan / EDUCO all rights reserved.

20

電⼦メールサービスの仕組み
テスト(学習)⽤に利⽤するトップレベルドメイン(TLD)について
以下を使いましょう。
.test.example.invalid
https://datatracker.ietf.org/doc/html/rfc2606© LPI-Japan / EDUCO all rights reserved.

21

電⼦メールサービスの仕組み
メール送受信の例
・同⼀ドメイン内(opensourcetech.test)におけるメール送受信
・異なるドメイン間におけるメール送受信(opensourcetech.test → opensourcetech.example)© LPI-Japan / EDUCO all rights reserved.

22

電⼦メールサービスの仕組み
ユーザーA から ユーザーBへのメール送信
opensourcetech.testのメールサーバ①メール送信ユーザーA(メールクライアント)
usera@opensourcetech.test

opensourcetech.exampleのメールサーバ②メール受信ユーザーB(メールクライアント)
userb@opensourcetech.test

ユーザーC(メールクライアント)
userc@opensourcetech.example© LPI-Japan / EDUCO all rights reserved.

23

電⼦メールサービスの仕組み
ユーザーA から ユーザーCへのメール送信
opensourcetech.testのメールサーバ

opensourcetech.exampleのメールサーバ②メール転送①メール送信ユーザーA(メールクライアント)
usera@opensourcetech.test③メール受信ユーザーB(メールクライアント)
userb@opensourcetech.test

ユーザーC(メールクライアント)
userc@opensourcetech.example© LPI-Japan / EDUCO all rights reserved.

24

電⼦メールサービスの仕組み
⾝近な例で⽰すと、郵便の仕組みと似ている
opensourcetech.testのメールサーバ

opensourcetech.exampleのメールサーバ
他の地域宛ての郵便は、その地域を管轄する郵便局へ転送する

同⼀市内の郵便は、その地域を管轄する郵便局が回収して、配達するユーザーA(メールクライアント)
usera@opensourcetech.test

ユーザーB(メールクライアント)
userb@opensourcetech.test

ユーザーC(メールクライアント)
userc@opensourcetech.example© LPI-Japan / EDUCO all rights reserved.

25

電⼦メールサービスの仕組み
電⼦メールサービスで使われるプロトコルとポート番号
プロトコル名

ポート番号

役割

smtp

25

メール送信・転送

smtps

465

メール送信・転送(暗号化)

pop3

110

メール受信

pop3s

995

メール受信(暗号化)

imap

143

メール受信

imaps

993

メール受信(暗号化)

Submission port(SMTP)

587

クライアントからのメール送信(OP25B)© LPI-Japan / EDUCO all rights reserved.

26

電⼦メールサービスの仕組み
使⽤されるプロトコル
opensourcetech.testのメールサーバ

opensourcetech.exampleのメールサーバ
メール転送
SMTP

メール送信
SMTP

メール受信
POP3,IMAP

ユーザーA(メールクライアント)
usera@opensourcetech.test© LPI-Japan / EDUCO all rights reserved.

27

電⼦メールサービスの仕組み
POP3 vs IMAP
メールサーバ

IMAP

POP3

サーバにあるメール閲覧※ダウンロードはしない
サーバからメールをダウンロード
メールクライアント(Webブラウザ)

メールクライアント(メールソフトウェア)© LPI-Japan / EDUCO all rights reserved.

28

技術解説

Postfixの設定と管理© LPI-Japan / EDUCO all rights reserved.

29

Postfixの設定と管理
ここから構築するメールサービス環境
mail.opensourcetech.test(メールサーバ) on Ubuntu 20.04.3 LTS①メール送信ユーザーA(メールクライアント)
ubuntu@opensourcetech.test②メール受信ユーザーB(メールクライアント)
matt@opensourcetech.test© LPI-Japan / EDUCO all rights reserved.

30

Postfixの設定と管理
DNSサーバにおけるメールサーバ関連レコードの確認
ubuntu@linucserver:~$ host -t mx opensourcetech.test 192.168.1.247
Using domain server:
Name: 192.168.1.247
Address: 192.168.1.247#53
Aliases:
opensourcetech.test mail is handled by 10 mail.opensourcetech.test.
ubuntu@linucserver:~$ nslookup> server 192.168.1.247
Default server: 192.168.1.247
Address: 192.168.1.247#53> 192.168.1.247
247.1.168.192.in-addr.arpa
name = dns.opensourcetech.test.
247.1.168.192.in-addr.arpa
name = ftp.opensourcetech.test.
247.1.168.192.in-addr.arpa
name = www.opensourcetech.test.
247.1.168.192.in-addr.arpa
name = smb.opensourcetech.test.
247.1.168.192.in-addr.arpa name = mail.opensourcetech.test.
> exit© LPI-Japan / EDUCO all rights reserved.

31

Postfixの設定と管理
ユーザ作成
ubuntu@linucserver:~$ sudo adduser matt ※注︓ubuntuなどの場合、useraddだとデフォルトではホームディレクトリが作成されない
Adding user `matt' ...
Adding new group `matt' (1001) ...
Adding new user `matt' (1001) with group `matt' ...
The home directory `/home/matt' already exists. Not copying from `/etc/skel'.
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for mattEnter the new value, or press ENTER for the default
Full Name []:Room Number []:Work Phone []:Home Phone []:Other []:Is the information correct? [Y/n]ubuntu@linucserver:~$ cat /etc/passwd
ubuntu:x:1000:1000:LinuCserver:/home/ubuntu:/bin/bash
dovecot:x:114:119:Dovecot mail server,,,:/usr/lib/dovecot:/usr/sbin/nologin
postfix:x:116:121::/var/spool/postfix:/usr/sbin/nologin
matt:x:1001:1001:,,,:/home/matt:/bin/bash© LPI-Japan / EDUCO all rights reserved.

32

Postfixの設定と管理
PostfixとはSendmailに代わるメールサーバとして誕⽣した、メールサーバプログラム。
メールの送信や転送を担うプログラム。MTA(Mail Transfer Agent)。

https://www.postfix.org/© LPI-Japan / EDUCO all rights reserved.

33

Postfixの設定と管理
Postfixのインストール
ubuntu@linucserver:~$ sudo apt install postfix.
.
setting myhostname: linucserver
setting alias maps
setting alias databasechanging /etc /mailname to opensourcetech.test
setting myorigin
setting destinations: $myhostname, opensourcetech.test, linucserver, localhost.localdomain, localhost
setting relayhost:setting mynetworks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
setting mailbox_size_limit: 0
setting recipient_delimiter: +setting inet_interfaces: allsetting inet_protocols: all/etc /aliases does not exist, creating it.
WARNING: /etc /aliases exists, but does not have a root alias.
Postfix (main.cf) is now set up with a default configuration. If you need tomake changes, edit /etc /postfix/main.cf (and others) as needed. To view
Postfix configuration values, see postconf(1).
After modifying main.cf, be sure to run 'systemctl reload postfixʼ.
.
.
.

途中プロンプトが表⽰されるので、各項⽬を選択していく© LPI-Japan / EDUCO all rights reserved.

34

Postfixの設定と管理
Postfixの設定(/etc/postfix/main.cf)
ubuntu@linucserver:~$ cat /etc /postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = noappend_dot_mydomain = noreadme_directory = nocompatibility_level = 2
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.opensourcetech.test ・・・・メールサーバの名前
alias_maps = hash:/etc /aliases
alias_database = hash:/etc /aliases
myorigin = /etc /mailname ・・・・ドメイン名
mydestination = $myhostname, opensourcetech.test, linucserver, localhost.localdomain, localhost ・・・・管轄するメール宛先
relayhost =mynetworks = 192.168.1.0/24 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/ ・・・・メールボックス形式の指定(mbox形式 or Maildir形式)、dovecot側も同じにする必要あり
ubuntu@linucserver:~$ cat /etc /mailname
opensourcetech.test© LPI-Japan / EDUCO all rights reserved.

35

Postfixの設定と管理
postconfコマンド
main.cfの内容⼀覧や内容変更などを⾏う管理コマンド
postconf –d︓全パラメータのデフォルト値を表⽰
postconf –d パラメータ︓指定パラメータのデフォルト値を表⽰
postconf –n︓デフォルトから変更されているパラメータを表⽰
postconf︓全パラメータ内容を表⽰
http://www.postfix-jp.info/trans-2.2/jhtml/postconf.1.html
ubuntu@linucserver:~$ postconf -n.
.
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all.
.
mydestination = $myhostname, opensourcetech.test, linucserver, localhost.localdomain, localhost
myhostname = mail.opensourcetech.test
mynetworks = 192.168.1.0/24 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc /mailname© LPI-Japan / EDUCO all rights reserved.

36

Postfixの設定と管理
mbox形式 vs Maildir形式
main.cf内の “home_mailbox” で設定する
mbox形式
⼀つのファイルにユーザのメールデータを格納する
ubuntu@linucserver:/var/spool/mail$ ls -l /var/spool/mail
lrwxrwxrwx 1 root root 7 Aug 24 2021 /var/spool/mail -> ../mailubuntu@linucserver:/var/spool/mail$ ls -l /var/mail
total 8
-rw------- 1 root mail 0 Jul 15 12:42 Maildir-rw------- 1 matt mail 1656 Jul 30 12:38 matt-rw------- 1 root mail 0 Jul 15 12:41 root-rw------- 1 ubuntu mail 1381 Jul 30 12:38 ubuntu© LPI-Japan / EDUCO all rights reserved.

37

Postfixの設定と管理

Maildir形式
⼀つのメールを⼀つのファイルとして格納する
ubuntu@linucserver:/var/spool/mail$ ls -l /home/ubuntu/Maildir/
total 32
drwx------ 2 ubuntu ubuntu 4096 Jul 30 12:45 cur-rw------- 1 ubuntu ubuntu 387 Jul 30 12:45 dovecot-uidlist-rw------- 1 ubuntu ubuntu 8 Jul 30 12:44 dovecot-uidvalidity-r--r--r-- 1 ubuntu ubuntu 0 Jul 30 12:44 dovecot-uidvalidity.62e527bd-rw------- 1 ubuntu ubuntu 488 Jul 30 12:45 dovecot.index.cache-rw------- 1 ubuntu ubuntu 856 Jul 30 12:45 dovecot.index.log-rw------- 1 ubuntu ubuntu 384 Jul 30 12:44 dovecot.list.index.log
drwx------ 2 ubuntu ubuntu 4096 Jul 30 12:45 new
drwx------ 2 ubuntu ubuntu 4096 Jul 30 12:45 tmp
ubuntu@linucserver:/var/spool/mail$ ls /home/ubuntu/Maildir/new
1659188132.Vfd00I41963M502260.linucserver 1659188132.Vfd00I41965M776258.linucserver
ubuntu@linucserver:/var/spool/mail$ cat /home/ubuntu/Maildir/new/1659188132.Vfd00I41965M776258.linucserver
Date: Sat, 30 Jul 2022 22:35:32 +0900
From: ubuntu <ubuntu@opensourcetech.test>
To: ubuntu@opensourcetech.test
Cc: matt@opensourcetech.test
Subject: テストメールです
届いてますか︖※⼀部省略してます© LPI-Japan / EDUCO all rights reserved.

38

Postfixの設定と管理
Postfixの起動
ubuntu@linucserver:~$ sudo systemctl start postfix[sudo] password for ubuntu:
ubuntu@linucserver:~$ systemctl status postfix● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2022-07-30 12:44:26 UTC; 23min ago
Process: 130923 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 130923 (code=exited, status=0/SUCCESS)
Jul 30 12:44:26 linucserver systemd[1]: Starting Postfix Mail Transport Agent...
Jul 30 12:44:26 linucserver systemd[1]: Finished Postfix Mail Transport Agent.

© LPI-Japan / EDUCO all rights reserved.

39

技術解説

dovecotの設定と管理© LPI-Japan / EDUCO all rights reserved.

40

dovecotの設定と管理
dovecotとは
POP3/IMAPに対応した、メールサーバプログラム。
メールの配送を担うプログラム。MDA(Mail Delivery Agent)。

https://www.dovecot.org/© LPI-Japan / EDUCO all rights reserved.

41

dovecotの設定と管理
dovecotのインストール
ubuntu@linucserver:~$ sudo apt install dovecot-common dovecot-imapd dovecot-pop3d.
.
.
Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service → /lib/systemd/system/dovecot.service.
dovecot.socket is a disabled or a static unit, not starting it.
Setting up dovecot-imapd (1:2.3.7.2-1ubuntu3.6) ...
Creating config file /etc/dovecot/conf.d/20-imap.conf with new version
Setting up dovecot-pop3d (1:2.3.7.2-1ubuntu3.6) ...
Creating config file /etc/dovecot/conf.d/20-pop3.conf with new version
Processing triggers for ufw (0.36-6) ...
Processing triggers for systemd (245.4-4ubuntu3.15) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.7) ...
Processing triggers for dovecot-core (1:2.3.7.2-1ubuntu3.6) ...

© LPI-Japan / EDUCO all rights reserved.

42

dovecotの設定と管理
dovecotの設定
dovecot.conf + /etc/dovecot/conf.d配下の*.confで構成されている
ubuntu@linucserver:~$ ls /etc/dovecot
conf.d dovecot-dict-auth.conf.ext dovecot-dict-sql.conf.ext dovecot-sql.conf.ext dovecot.conf private
ubuntu@linucserver:~$ ls /etc/dovecot/conf.d
10-auth.conf
10-tcpwrapper.conf 90-plugin.conf
auth-passwdfile.conf.ext
10-director.conf 15-lda.conf
90-quota.conf
auth-sql.conf.ext
10-logging.conf 15-mailboxes.conf auth-checkpassword.conf.ext auth-static.conf.ext
10-mail.conf
20-imap.conf
auth-deny.conf.ext
auth-system.conf.ext
10-master.conf 20-pop3.conf
auth-dict.conf.ext
auth-vpopmail.conf.ext
10-ssl.conf
90-acl.conf
auth-master.conf.ext© LPI-Japan / EDUCO all rights reserved.

43

dovecotの設定と管理
dovecot.confの設定
ubuntu@linucserver:~$ cat /etc/dovecot/dovecot.conf!include_try /usr/share/dovecot/protocols.d/*.protocol
listen = *, :: ・・・・待ち受けインらーフェイス指定!include conf.d/*.conf ・・・・指定ディレクトリ内の外部ファイルも設定として取り込む!include_try local.conf
ubuntu@linucserver:~$ cat /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir ・・・・メールボックス形式の指定(mbox形式 or Maildir形式)、postfix側も同じにする必要あり
namespace inbox {inbox = yes}
mail_privileged_group = mailubuntu@linucserver:~$ cat /etc/dovecot/conf.d/10-ssl.conf
ssl = no ・・・・sslの使⽤
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = </usr/share/dovecot/dh.pem
ubuntu@linucserver:~$ cat /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no ・・・・暗号化されていない認証を許可するかどうか
auth_mechanisms = plain login!include auth-system.conf.ext© LPI-Japan / EDUCO all rights reserved.

44

dovecotの設定と管理
dovecot.confの設定
その他、dovecotの設定に関しては以下を参照。
https://doc.dovecot.org/configuration_manual/© LPI-Japan / EDUCO all rights reserved.

45

dovecotの設定と管理
dovecotの起動
ubuntu@linucserver:~$ sudo systemctl start dovecot[sudo] password for ubuntu:
ubuntu@linucserver:~$ systemctl status dovecot● dovecot.service - Dovecot IMAP/POP3 email server
Loaded: loaded (/lib/systemd/system/dovecot.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-07-30 12:44:26 UTC; 3h 11min ago
Docs: man:dovecot(1)
http://wiki2.dovecot.org/
Main PID: 130689 (dovecot)
Tasks: 5 (limit: 2274)
Memory: 4.7M
CGroup: /system.slice/dovecot.service├─130689 /usr/sbin/dovecot -F├─130913 dovecot/anvil├─130914 dovecot/log├─130918 dovecot/config└─130935 dovecot/stats
Jul 30 13:48:37 linucserver dovecot[130914]: pop3-login: Aborted login (no auth attempts in 0 secs): user=<>, >Jul 30 13:48:57 linucserver dovecot[130914]: pop3-login: Aborted login (no auth attempts in 0 secs): user=<>, >Jul 30 13:49:20 linucserver auth[131358]: pam_unix(dovecot:auth): Couldn't open /etc /securetty: No such file o>
Jul 30 13:49:20 linucserver auth[131358]: pam_unix(dovecot:auth): Couldn't open /etc /securetty: No such file o>
Jul 30 13:49:20 linucserver dovecot[130914]: pop3-login: Login: user=<ubuntu>, method=PLAIN, rip=192.168.1.134>
Jul 30 13:49:21 linucserver dovecot[130914]: pop3(ubuntu)<131359><846eCAbl8dzAqAGG>: Disconnected: Logged out >© LPI-Japan / EDUCO all rights reserved.

46

技術解説

電⼦メール送受信の確認© LPI-Japan / EDUCO all rights reserved.

47

電⼦メール送受信の確認
mailコマンド(メールの確認)
ubuntu@linucserver:~$ mail -f ~/Maildir"/home/ubuntu/Maildir": 1 message 1 new>N 1 ubuntu
21/771 テストメールです?1
Return-Path: <ubuntu@opensourcetech.test>
X-Original-To: ubuntu@opensourcetech.test
Delivered-To: ubuntu@opensourcetech.test
Received: from DESKTOP-P5K2HP1 (unknown [192.168.1.134])by mail.opensourcetech.test (Postfix) with SMTP id 1C48A60F96;
Sat, 30 Jul 2022 16:08:44 +0000 (UTC)
Date: Sun, 31 Jul 2022 01:08:43 +0900
From: ubuntu <ubuntu@opensourcetech.test>
To: matt@opensourcetech.test
Cc: ubuntu@opensourcetech.test
Subject: テストメールです
Message-Id: <20220731010843.7f0c8b9bd44228190eceab46@opensourcetech.test>
X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32)
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
届くかな︖
-ubuntu <ubuntu@opensourcetech.test>?q
Held 1 message in /home/ubuntu/Maildir© LPI-Japan / EDUCO all rights reserved.

48

電⼦メール送受信の確認
mailコマンド(メールの確認)
ubuntu@linucserver:~$ mail -f ~/Maildir"/home/ubuntu/Maildir": 1 message 1 new>N 1 ubuntu
21/771 テストメールです?1
Return-Path: <ubuntu@opensourcetech.test>
X-Original-To: ubuntu@opensourcetech.test
Delivered-To: ubuntu@opensourcetech.test
Received: from DESKTOP-P5K2HP1 (unknown [192.168.1.134])by mail.opensourcetech.test (Postfix) with SMTP id 1C48A60F96;
Sat, 30 Jul 2022 16:08:44 +0000 (UTC)
Date: Sun, 31 Jul 2022 01:08:43 +0900
From: ubuntu <ubuntu@opensourcetech.test>
To: matt@opensourcetech.test
Cc: ubuntu@opensourcetech.test
Subject: テストメールです
Message-Id: <20220731010843.7f0c8b9bd44228190eceab46@opensourcetech.test>
X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.30; i686-pc-mingw32)
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
届くかな︖
-ubuntu <ubuntu@opensourcetech.test>?q
Held 1 message in /home/ubuntu/Maildir© LPI-Japan / EDUCO all rights reserved.

49

電⼦メール送受信の確認
mailコマンド(メールの作成・送信)
ubuntu@linucserver:~$ mail -s mailcommandtest matt@opensourcetech.test ※メール件名 & Toのアドレス指定
Cc: ubuntu@opensourcetech.test ・・・・Ccの宛先
Hello! ・・・・メール本⽂
ubuntu@linucserver:~$ mail -f ~/Maildir"/home/ubuntu/Maildir": 2 messages 1 unread
1 ubuntu
21/771 テストメールです>U 2 LinuCserver
14/517 mailcommandtest?2
Return-Path: <ubuntu@linucserver>
X-Original-To: ubuntu@opensourcetech.test
Delivered-To: ubuntu@opensourcetech.test
Received: by mail.opensourcetech.test (Postfix, from userid 1000)
id BC49261123; Sat, 30 Jul 2022 16:13:30 +0000 (UTC)
Subject: mailcommandtest
To: <matt@opensourcetech.test>
Cc: <ubuntu@opensourcetech.test>
X-Mailer: mail (GNU Mailutils 3.7)
Message-Id: <20220730161330.BC49261123@mail.opensourcetech.test>
Date: Sat, 30 Jul 2022 16:13:30 +0000 (UTC)
From: LinuCserver <ubuntu@linucserver>
Hello!
?q
Held 2 messages in /home/ubuntu/Maildir
その他、mailコマンドについては以下を参照。
https://www.commandlinux.com/man-page/man1/mail.1.html© LPI-Japan / EDUCO all rights reserved.

50

電⼦メール送受信の確認
メーラー(MTU)の使⽤
・Thunderbird
https://www.thunderbird.net/ja/
・sylpheedhttps://sylpheed.sraoss.jp/ja/など© LPI-Japan / EDUCO all rights reserved.

51

電⼦メール送受信の確認
今回やってみた構成のおさらい
mail.opensourcetech.test(メールサーバ) on Ubuntu 20.04.3 LTS

postfix(MTA)

dovecot(MDA)①メール送信(SMTP)②メール受信(POP3,IMAP)

ユーザーA(メールクライアント/MUA)
ubuntu@opensourcetech.test

ユーザーB(メールクライアント/MUA)
matt@opensourcetech.test© LPI-Japan / EDUCO all rights reserved.

52

Appendix© LPI-Japan / EDUCO all rights reserved.

53

技術解説

Postfix/dovecotのTLS設定© LPI-Japan / EDUCO all rights reserved.

54

Postfix/dovecotのTLS設定
PostfixのTLS設定(main.cf)# TLS parameterssmtpd_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© LPI-Japan / EDUCO all rights reserved.

55

Postfix/dovecotのTLS設定
dovecotのTLS設定(10-ssl.conf)
ubuntu@linucserver:~$ cat /etc /dovecot/conf.d/10-ssl.conf#### SSL settings### SSL/TLS support: yes, no, required. <doc /wiki/SSL.txt>
ssl = yes
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before# dropping root privileges, so keep the key file unreadable by anyone but# root. Included doc /mkcert.sh can be used to easily generate self-signed# certificate, just make sure to update the domains in dovecot-openssl.cnf#ssl_cert = </etc /dovecot/private/dovecot.pem#ssl_key = </etc /dovecot/private/dovecot.key# If key file is password protected, give the password here. Alternatively# give it when starting dovecot with -p parameter. Since this file is often# world-readable, you may want to place this setting instead to a different# root owned 0600 file by using ssl_key_password = <path.
#ssl_key_password =# PEM encoded trusted certificate authority. Set this only if you intend to use# ssl_verify_client_cert=yes. The file should contain the CA certificate(s)# followed by the matching CRL(s). (e.g. ssl_ca = </etc /ssl/certs/ca.pem)#ssl_ca =# Require that CRL check succeeds for client certificates.
#ssl_require_crl = yes© LPI-Japan / EDUCO all rights reserved.

56

技術解説

トラブルシュート

© LPI-Japan / EDUCO all rights reserved.

57

トラブルシュート
ログファイルなどの確認
ubuntu@linucserver:/var/log$ lsalternatives.log
btmp
dpkg.log
kern.log.4.gz syslog.4.gz
alternatives.log.1
btmp.1
dpkg.log.1
landscapesyslog.5.gz
alternatives.log.2.gz cloud-init-output.log dpkg.log.2.gz lastlog
syslog.6.gz
aptcloud-init.log
faillog
mail.log
syslog.7.gz
auth.log
dist-upgrade
installer
mail.log.1
ubuntu-advantage.log
auth.log.1
dmesg
journalprivateubuntu-advantage.log.1
auth.log.2.gz
dmesg.0
kern.log
syslogubuntu-advantage.log.2.gz
auth.log.3.gz
dmesg.1.gz
kern.log.1
syslog.1
unattended-upgrades
auth.log.4.gz
dmesg.2.gz
kern.log.2.gz syslog.2.gz wtmp
bootstrap.log
dmesg.3.gz
kern.log.3.gz syslog.3.gz
ubuntu@linucserver:/var/log$ cat mail.log
Jul 30 12:33:59 linucserver postfix/postfix-script[128456]: stopping the Postfix mail system
Jul 30 12:33:59 linucserver postfix/master[105725]: terminating on signal 15
Jul 30 12:34:00 linucserver postfix/postfix-script[128858]: warning: symlink leaves directory: /etc /postfix/./makedefs.out
Jul 30 12:34:01 linucserver postfix/postfix-script[129024]: starting the Postfix mail system
Jul 30 12:34:01 linucserver postfix/master[129026]: daemon started -- version 3.4.13, configuration /etc /postfix
Jul 30 12:34:36 linucserver postfix/smtpd[129032]: connect from unknown[192.168.1.134]
Jul 30 12:34:36 linucserver postfix/smtpd[129032]: 8670460F97: client=unknown[192.168.1.134]
Jul 30 12:34:36 linucserver postfix/cleanup[129038]: 8670460F97: messageid=<20220730213436.e83ca86d3daa0d2fbd6508b6@opensourcetech.test>© LPI-Japan / EDUCO all rights reserved.

58

トラブルシュート
journalctlコマンド
ubuntu@linucserver:/var/log/journal$ journalctl -u dovecot-- Logs begin at Wed 2022-05-04 10:16:41 UTC, end at Sat 2022-07-30 16:17:01 UTC. -Jul 15 12:18:08 linucserver systemd[1]: Started Dovecot IMAP/POP3 email server.
Jul 15 12:18:08 linucserver dovecot[103408]: master: Dovecot v2.3.7.2 (3c910f64b) starting up for imap, pop3 (>Jul 15 12:53:45 linucserver dovecot[103423]: pop3-login: Login: user=<ubuntu>, method=PLAIN, rip=192.168.1.134>
Jul 15 12:53:45 linucserver dovecot[103423]: pop3(ubuntu)<106273><YHs6gtfjusDAqAGG>: Disconnected: Logged out >ubuntu@linucserver:/var/log/journal$ journalctl -u postfix-- Logs begin at Wed 2022-05-04 10:16:41 UTC, end at Sat 2022-07-30 16:17:01 UTC. -Jul 30 12:37:55 linucserver systemd[1]: Starting Postfix Mail Transport Agent...
Jul 30 12:37:55 linucserver systemd[1]: Finished Postfix Mail Transport Agent.
Jul 30 12:44:24 linucserver systemd[1]: postfix.service: Succeeded.
Jul 30 12:44:24 linucserver systemd[1]: Stopped Postfix Mail Transport Agent.
Jul 30 12:44:24 linucserver systemd[1]: Stopping Postfix Mail Transport Agent...
Jul 30 12:44:26 linucserver systemd[1]: Starting Postfix Mail Transport Agent...
Jul 30 12:44:26 linucserver systemd[1]: Finished Postfix Mail Transport Agent.

© LPI-Japan / EDUCO all rights reserved.

59

トラブルシュート
telnetコマンドを使った⼿動でもメール操作(送信など)
パケットキャプチャ

© LPI-Japan / EDUCO all rights reserved.

60

Appendix
LinuCレベル2 202試験
主題2.10の例題と解説
https://linuc.org/study/samples/index/s/2_10/© LPI-Japan / EDUCO all rights reserved.

61

本⽇のまとめ

Ø電⼦メールサービスの仕組みを理解するØPostfixの設定⽅法を理解するØDovecotの設定⽅法を理解する

送信/転送(postfix,MTA)と配送(dovecot,MDA)を別々で構築する必要ある
事前に使⽤するドメインの⽤意(取得など)が必要である
メッセンジャーなどにコミニケーションツールが移⾏しつつあるが、認証や社外とのやり取りではまだまだ現役© LPI-Japan / EDUCO all rights reserved.

62

Q&A

© LPI-Japan / EDUCO all rights reserved.

63

Thank you for join todayʼs seminar!

https://www.opensourcetech.tokyo/
https://twitter.com/matt_zeus
https://www.facebook.com/takahiro.kujirai.1© LPI-Japan / EDUCO all rights reserved.

64