HOME | 2026-11-05 (Thu) Today's Access : 22 Total : 1414497. Since 10 Sep. 2019

 ラズパイで作る自宅WEBサーバ:nginx編
第8回 メールサーバ設定
2026.11.01

今回はメールサーバを扱いますが、大量のスパムメールなどは無駄にシステム・リソースを消費するので、利用目的がない限り導入する必要はないと思います。
テスト環境として使用する場合は、ブロードバンドルータで受信ポートを塞ぐことをお勧めします。
PortProtocol
25:SMTP/TCP外部のメールサーバーへ送信するポート※1
110:POP3/TCP暗号化されていないメール受信ポート
143:IMAP/TCP暗号化されていないメール同期・受信ポート
587:SMTP/TCP現在主流のメール送信(認証付き)ポート※2
993:IMAPS/TCP暗号化されたメール同期・受信ポート
995:POP3S/TCP暗号化されたメール受信ポート

※1:25番ポート (SMTP)は、一般的なプロバイダ(ISP)では、迷惑メール対策(OP25B)としてすでにブロックされていることが多いです。
※2:システムメッセージ送信用に開放してます。

それでは、メールサーバー(Postfix)の設定を行います。 送信サーバーとしてPostfix、受信用途として dovecot(ダヴコット) を使用します。 実際には、Postfix がメールの送信と着信監視も行っていて、着信するとサーバ内にメールを保存します。 それを取り出して提供するのが、dovecot です。



ラズベリーパイのドメイン名は、第2回DNS設定で指定したexample.com、ローカルアドレスを、192.168.11.28にしています。 Postfix の設定は多岐に渡り、また記述方法も多様ですので、参考程度にみてください。 また、複数ドメイン名に対応したVirtual設定は解説していません。

●Postfix のインストール

パッケージの有無を確認します
$ dpkg --get-selections | grep postfix

利用できるパッケージのバージョンの確認します
$ apt-cache show postfix
Package: postfix
Architecture: arm64
Version: 3.8.6-1ubuntu0.1

$ sudo apt-get install postfix


メール設定の一般形式:[インターネットサイト] を選択します


System mail name: に設定されているドメイン名が自動で入力されています。変更する場合は編集します。
システムメール名:ns.example.com ← BINDで設定したホスト名を入力

ホスト名はPostfix変数myoriginとして使用されます。myorigin を確認します
$ cat /etc/mailname
ns.example.com

$ postconf | grep mail_version
mail_version = 3.8.6


●/etc/postfix/main.cf の編集

$ sudo vi /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP unknown ← メールサーバ名の隠蔽化
myhostname = ns.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, example.com, localhost.example.com, localhost
mynetworks = 192.168.11.0/24, 127.0.0.0/8 ← ローカルホストと内部ネットワークを許可
mailbox_size_limit = 1073741824           ← メールボックスサイズを1Gに制限
inet_protocols = ipv4                     ← IPV4のみ
message_size_limit = 10485760             ← 送受信メールサイズを10Mに制限
home_mailbox = Maildir/                   ← Maildir形式へ移行
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
                              ↑受信者はUNIXアカウントもしくはローカルエイリアス

smtpd_client_restrictions = 
  permit_mynetworks,
  reject_unknown_client,                 ← 逆引きができないホストの接続を拒否
  permit

allow_mail_to_commands = alias, forward, include
default_privs = nobody                   ← 配送エージェントが使うデフォルト権限
【補足説明】
※ local_recipient_maps に「proxy:」を付けないと、メルアドに.(ドット)
例) hoge.hoge@example.com
がある場合に受信拒否されてしまいます
 Recipient address rejected: User unknown in local recipient table
※ allow_mail_to_commands に include を付加すると "| command" への配送が認められます
※ default_privs = nobody 外部ファイルまたはコマンドへの配送で、配送エージェントが使う デフォルトの権限です。特権ユーザや POSTFIX の所有者を指定してはいけません。

main.cf の内容を確認します。設定内容がダンプされ、末行に問題個所があれば出力されます
$ postconf -d (デフォルト値表示)
$ postconf

Postfix を再起動します
$ sudo systemctl start postfix

自動起動を有効にします。
$ sudo systemctl enable postfix

$ systemctl reload postfix

●起動プロセスの確認
master, pickup, qmgr の3つのプロセスが起動していることを確認します。
$ ps -alx | grep master
$ ps -alx | grep pickup
$ ps -alx | grep qmgr

●送信テスト
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ns.example.com ESMTP unknown
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

Escape character is '^]'.
のあと、すぐに「Connection closed by foreign host(外国のホストにより接続が切断されました)」というエラーが表示される場合、 Postfixの設定ミス、IPv6/IPv4のバインド不一致、あるいはファイアウォールやセキュリティ制限による拒否が主な原因です。
IPv4で運用している場合、/etc/postfix/main.cf の下記の行を確認してみてください。
inet_interfaces = all
inet_protocols = ipv4

●SMTPSのサーバ証明書と認証設定

$ sudo vi /etc/postfix/main.cf
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

ssl-cert-snakeoil.pem は、UbuntuやDebianなどのLinuxディストリビューションで、 パッケージ(ssl-certなど)のインストール時に自動生成されるテスト用の自己署名SSL証明書です。 「Snakeoil(ヘビの油)」とは、効果のない気休めやインチキを意味し、セキュリティ的に安全ではない(信頼された認証局から発行されていない) 仮の証明書であることを表しています。

「第7回 認証サーバ設定」で取得したLet's Encrypt証明書で置き換えます。

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
  ↓
smtpd_tls_cert_file = /etc/letsencrypt/live/example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/example.com/privkey.pem

●Submissionポート(TCP587)の設定

$ sudo vi /etc/postfix/master.cf

submission inet n - y - - smtpd
 -o smtpd_tls_security_level=may
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
 -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject

submissionセクションの全オプションを有効にしてアクセス制限を厳しくしすぎると、メール送信時エラーになります。
554 5.7.1 : Recipient address rejected: Access denied
submission(587番ポート)経由で localhost(127.0.0.1)からメールを送信しようとした際、Postfixにアクセスを拒否されてしまいました。

security_levelを encrypt にしてしまうと、クライアントから接続してメール送信する際に
 530 5.7.0 Must issue a STARTTLS command first
「必ずSTARTTLSをしてから送れ」と言われてしまうので、暗号化を必須としない may にしたほうが無難です。

#smtps inet n - y - - smtpd
# -o smtpd_tls_wrappermode=yes
  ↓コメントを外す
smtps inet n - y - - smtpd
-o smtpd_tls_wrappermode=yes

●IPv6の無効化

$ sudo vi /etc/hosts

127.0.1.1 Rasp3Bplus Rasp3Bplus
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
#::1 localhost ip6-localhost ip6-loopback
#ff02::1 ip6-allnodes
#ff02::2 ip6-allrouters

●設定の反映とポートの確認

$ sudo systemctl restart postfix
$ sudo apt-get install net-tools
$ sudo netstat -anp | grep "master" | grep "0.0.0.0"
tcp   0  0 0.0.0.0:80     0.0.0.0:*   LISTEN    1085/nginx: master
tcp   0  0 0.0.0.0:587    0.0.0.0:*   LISTEN    1555/master
tcp   0  0 0.0.0.0:25     0.0.0.0:*   LISTEN    1555/master
tcp   0  0 0.0.0.0:443    0.0.0.0:*   LISTEN    1085/nginx: master
開いているポートを確認します。
$ netstat -an | grep tcp | grep LISTEN
tcp    0   0 192.168.11.28:53    0.0.0.0:*     LISTEN
tcp    0   0 192.168.11.28:53    0.0.0.0:*     LISTEN
tcp    0   0 192.168.11.28:53    0.0.0.0:*     LISTEN
tcp    0   0 192.168.11.28:53    0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.1:3306      0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.54:53       0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.53:53       0.0.0.0:*     LISTEN
tcp    0   0 0.0.0.0:143         0.0.0.0:*     LISTEN
tcp    0   0 0.0.0.0:80          0.0.0.0:*     LISTEN
tcp    0   0 0.0.0.0:587         0.0.0.0:*     LISTEN
tcp    0   0 0.0.0.0:110         0.0.0.0:*     LISTEN
tcp    0   0 0.0.0.0:25          0.0.0.0:*     LISTEN
tcp    0   0 0.0.0.0:22          0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.1:53        0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.1:53        0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.1:53        0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.1:53        0.0.0.0:*     LISTEN
tcp    0   0 0.0.0.0:995         0.0.0.0:*     LISTEN
tcp    0   0 0.0.0.0:993         0.0.0.0:*     LISTEN
tcp    0   0 0.0.0.0:443         0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.1:953       0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.1:953       0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.1:953       0.0.0.0:*     LISTEN
tcp    0   0 127.0.0.1:953       0.0.0.0:*     LISTEN
tcp6   0   0 ::1:953             :::*          LISTEN
tcp6   0   0 ::1:953             :::*          LISTEN
tcp6   0   0 ::1:953             :::*          LISTEN
tcp6   0   0 ::1:953             :::*          LISTEN
tcp6   0   0 :::22               :::*          LISTEN
●Submissionポートでの通信(STARTTLS)確認

$ telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ns.example.com ESMTP unknown
ehlo localhost
250-ns.example.com
250-PIPELINING
250-SIZE 10485760
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING
quit
221 2.0.0 Bye
Connection closed by foreign host.
ここでは、拡張Hellow (EHLO)コマンドを使っています。Hellow (HELO) コマンドより詳細な情報が表示されます。

●SMTP-AUTH(SASL2)の実装

もともとSMTPサーバには認証機能がありませんでした。 その認証を、普通にIDとパスワードを使って行うのが「SMTP-AUTHです。

パッケージの確認とインストールを行います
$ dpkg --get-selections | grep sasl
libauthen-sasl-perl                  install
libsasl2-2:arm64                     install
libsasl2-modules:arm64               install
libsasl2-modules-db:arm64            install
$ apt-cache show sasl2-bin
Package: sasl2-bin
Architecture: arm64
Version: 2.1.28+dfsg1-5ubuntu3.1

$ sudo apt-get install sasl2-bin

◇テストユーザの作成
メールテスト用にユーザアカウントを1つ作っておきます。
$ sudo /usr/sbin/adduser --home /home/mailuser1 --shell /bin/bash mailuser1
Enter new UNIX password: mailpasswd1

ログインできないユーザにします
$ sudo usermod -s /usr/sbin/nologin mailuser1

SMTP認証用のユーザーアカウントも1つ作ります。
システムユーザ名とSASLユーザ名が同じ(例: mailuser1)である場合、PostfixやDovecotはLinuxのシステム情報(/etc/passwd)をそのまま参照します。
1. ユーザーは「mailuser1」というSASLユーザ名で認証。
2. Postfix/Dovecotは /etc/passwd を見に行き、mailuser1 のホームディレクトリは /home/mailuser1/ と自動的に理解します。
3. そのホームディレクトリ配下の Maildir/ をメールディレクトリとして利用します。
複雑なマッピング表(変換表)を自作する必要が一切ありません。

$ sudo saslpasswd2 -u example.com -c mailuser1
Password: mailpasswd1

設定内容を確認します
$ sudo sasldblistusers2
mailuser1@example.com: userPassword

※ユーザを削除する場合
$ sudo saslpasswd2 -u example.com -d mailuser1

SMTP認証データベースのグループおよび権限を設定します
$ sudo chgrp postfix /etc/sasldb2
$ sudo chmod 640 /etc/sasldb2

Postfix が chroot環境で実行されているので、ハードリンクします(/etc/postfix/master.cf で確認)。
$ cd /var/spool/postfix/etc
$ sudo mv sasldb2 sasldb2_org ← 初期状態では sasldb2 はないかもしれません
$ sudo ln /etc/sasldb2 /var/spool/postfix/etc

Postfix に設定を追加します
$ sudo vi /etc/postfix/main.cf
smtpd_sasl_auth_enable=yes            ←SMTP認証を使用する
smtpd_sasl_local_domain=example.com
smtpd_recipient_restrictions=
  permit_mynetworks,
  permit_sasl_authenticated,
  check_client_access hash:/etc/postfix/reject_client,
  reject_unauth_destination
smtpd_sasl_security_options=noanonymous
※オプションの説明
permit_mynetworks:自サイトのネットワークからの接続を無条件で許可する
permit_sasl_authenticated:SMTP認証された接続を無条件で許可する
reject_unauth_destination:このサーバで配送終了とならないドメイン宛メール送信を却下する(不正中継対応)。

noanonymous:匿名での接続を拒否する
LOGIN認証や、PLAIN認証も含める場合には、「noanonymous」だけを設定します

設定を確認します
$ postconf

●受信サーバー(dovecot)の構築
受信したメールを取得するために、dovecotを用います。 これにより、POP3またはIMAPによるメール受信が可能になります。

パッケージの有無を確認します
$ dpkg --get-selections | grep dovecot

利用できるパッケージのバージョンの確認します
$ apt-cache show dovecot-core
Package: dovecot-core
Architecture: arm64
Version: 1:2.3.16+dfsg1-3ubuntu2.2

$ apt-cache show dovecot-imapd
Package: dovecot-imapd
Architecture: arm64
Version: 1:2.3.21+dfsg1-2ubuntu5

$ apt-cache show dovecot-pop3d
Package: dovecot-pop3d
Architecture: arm64
Version: 1:2.3.21+dfsg1-2ubuntu6.5
dovecot をインストールします
$ sudo apt-get install dovecot-core dovecot-imapd dovecot-pop3d
$ dovecot --version
2.3.21 (47349e2482)

●IPv4 専用設定
IPv4 のみを対象とするので、dovecot.confを書き換えます。

$ sudo vi /etc/dovecot/dovecot.conf
#listen = *, ::
  ↓IPv4のみListenする
listen = *

●SMTP-Authの設定
SMTPサーバでサポートされているSASL認証プラグインを確認します。
$ postconf -a
cyrus
dovecot

SASLにはCyrus-SASLとDovecot-SASLがありますが、ここではDovecot-SASLを用います。
Postfix の設定ファイルに SMTP-Auth用 に Dovecot を指定します。
$ sudo vi /etc/postfix/main.cf
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

●平文テキストでの認証設定

$ sudo vi /etc/dovecot/conf.d/10-auth.conf
#disable_plaintext_auth = yes
  ↓平文テキストでも認証可能とする
disable_plaintext_auth = no

auth_mechanisms = plain login ← この1行を追記します(平文パスワードを利用)

●Postfix への権限付与

$ sudo vi /etc/dovecot/conf.d/10-master.conf
  # Postfix smtp-auth
  #unix_listener /var/spool/postfix/private/auth {
  #  mode = 0666
  #}

  ↓コメントを外して編集

  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
●メールボックスの保存先指定
Postfix の home_mailbox と同じ場所をメールボックスの保存先として指定します。

$ sudo vi /etc/dovecot/conf.d/10-mail.conf

#mail_location = maildir:~/Maildir
....
mail_location = mbox:~/mail:INBOX=/var/mail/%u
  ↓コメントを外して編集
mail_location = maildir:~/Maildir
....
#mail_location = mbox:~/mail:INBOX=/var/mail/%u

●SSL接続設定

$ sudo vi /etc/dovecot/conf.d/10-ssl.conf
ssl = required ← SSL接続を必須にする場合
ssl_cert = </etc/letsencrypt/live/example.jp/fullchain.pem
ssl_key = </etc/letsencrypt/live/example.jp/privkey.pem

Dovecot を 起動します
$ sudo systemctl restart dovecot
$ sudo systemctl restart postfix

●送信テスト
新たにユーザーmailuser2を作って、mailuser1からmailuser2へメール送信してみます。

$ telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ns.example.com ESMTP unknown
HELO example.com
250 ns.example.com
MAIL FROM: mailuser1@example.com
250 2.1.0 Ok
RCPT TO: mailuser2@example.com
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: mailuser1@example.com
Subject: TEST
TEST MESSAGE
.
250 2.0.0 Ok: queued as DCFC0986FB
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

●サーバーに格納されたメールの表示
mailuser2 に届いたメールを確認してみます。

$ telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot (Ubuntu) ready.
USER mailuser2
+OK
PASS mailpasswd2
+OK Logged in.
LIST
+OK 1 messages:
1 269
.
UIDL
+OK
1 000000016ab8d8f4
.
TOP 1 0
+OK
Return-Path: <mailuser1@example.com>
X-Original-To: mailuser2@example.com
Delivered-To: mailuser2@example.com
From:mailuser1@example.com
Subject:TEST
Message-Id: <20260927083058.2F7A9C008A@ns.example.com>
Date: Sun, 27 Sep 2026 17:30:42 +0900 (JST)

.
RETR 1
+OK 269 octets
Return-Path: <mailuser1@example.com>
X-Original-To: mailuser2@example.com
Delivered-To: mailuser2@example.com
From:mailuser1@example.com
Subject:TEST
Message-Id: <20260927083058.2F7A9C008A@ns.example.com>
Date: Sun, 27 Sep 2026 17:30:42 +0900 (JST)

TEST MESSAGE
.
DELE 1
+OK Marked to be deleted.
QUIT
+OK Logging out, messages deleted.
Connection closed by foreign host.

・UIDL :POP3におけるメッセージごとの一意な識別子(UID)を確認する
左側の数字(1)がメール番号、右側の文字列(000000016ab8d8f4)がそのメール固有のUID(メッセージ識別子)です。 特定のメールだけを見たい場合は UIDL 1 のようにメール番号を指定します。

・TOP [メール番号] 0 :メールヘッダーを表示する
・RETR [メール番号] :本文とヘッダーをすべて表示する
・DELE [メール番号] :特定のメールを削除する

特定ユーザーの全メールのメッセージID一覧を表示する
$ sudo doveadm fetch -u mailuser hdr.message-id ALL
hdr.message-id: <20260927083058.2F7A9C008A@ns.example.com>


●迷惑メール対策
メールサーバ設定の最後に、迷惑メール対策に関して記載します。
Postfix 設定ファイルに追記します。
$ sudo vi /etc/postfix/main.cf
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
check_helo_access hash:/etc/postfix/spammers,
reject_invalid_hostname,
permit

●送信元による拒否設定
$ sudo vi /etc/postfix/spammers
220.181. REJECT  ← IPアドレス 220.181. で始まる送信元を拒否
.163.com REJECT  ← 163.com ドメインの送信元を拒否

$ sudo /usr/sbin/postmap hash:/etc/postfix/spammers

●メールヘッダーによる拒否設定

$ sudo vi /etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks

$ sudo vi /etc/postfix/header_checks

例)メールヘッダ Receive行のLAN内IPアドレスを非表示にする
/^Received:\sfrom .*\[127\.0\.0\.1\]|^Received:\sfrom .*\[192\.168\.*\]/ IGNORE

例)一般的なスパムとされるローカルアドレス経由を拒否する
/^Received:.*by 127\.0\.0\.1/ REJECT

例)グリニッジ標準時を利用して海外からのメールを拒否(日本は+0900)
/^Date:.*-0500/ REJECT
/^Date:.*-0600/ REJECT
/^Date:.*-0700/ REJECT
/^Date:.*-0800/ REJECT
/^Date:.*-0900/ REJECT
/^Date:.*+0800/ REJECT

変更を反映させます
$ sudo /usr/sbin/postalias /etc/postfix/header_checks

●メールサーバへの接続元による拒否設定

$ sudo vi /etc/postfix/reject_client
45.227.253. REJECT ← 45.227.253. で始まるIPアドレスの接続元を拒否

$ sudo vi /etc/postfix/main.cf
smtpd_recipient_restrictions=
 permit_mynetworks,
 permit_sasl_authenticated,
 check_client_access hash:/etc/postfix/reject_client,
 reject_unauth_destination

$ sudo postmap hash:/etc/postfix/reject_client

Postfixを再起動します
$ sudo /etc/init.d/postfix restart

●オープンリレー チェック(Opne Relay Check/不正中継テスト)

http://check.jippg.org/

●様々な設定 - RBL(Realtime Black List)
RBLは、既知のスパム発信元のIPアドレスを集めたリストです。 メールサーバは、RBLサーバに接続してIPアドレスをチェックし、ブロックすることが可能です。
Postfix の設定ファイル (/etc/postfix/main.cf) に追記します。
$ sudo vi /etc/postfix/main.cf
smtpd_recipient_restrictions =
 ....
 reject_rbl_client zen.spamhaus.org,
 reject_rbl_client bl.spamcop.net,
 ....

とても便利だとは思うのですが、注意も必要です。
RBLはメールが着信するたびに参照されますが、外部参照ですので回線が混雑している場合に処理に遅延が発生する可能性があります。
また、無料RBLの場合、そのサービスが終了したことに気付かないでいると、「参照先が見つかりません」というメッセージをPostfixがシステム管理者宛に吐き出します。迷惑メールが大量に届いていた場合、莫大なメッセージが管理者宛にメール送信されます。
管理者宛メールを携帯に転送していた場合には悲惨です。真夜中に突然、着信メールが止まらない~といった最悪の状態を招きかねません!

●メール着信確認
実際の運用ではリアルタイムに着信を確認できると非常に便利なので、 サーバーで受信したメールをWEBメールへ転送して、スマホで確認できるようにするとよいかもしれません。
$ sudo vi /home/mailuser/.forward
~/Maildir/ ← サーバーにメールを残す場合に指定
xxxxxxxx@yahoo.co.jp

Yahoo!メールやgmailは、メールサーバーの迷惑メール対策で取りこぼしたスパムメールもフィルターしてくれるので便利です。

●Windows10 で Telnet コマンドを有効にする場合
LAN内のパソコンから、telnet コマンドを用いて確認する場合の設定です。
コントロールパネル→プログラム→プログラムと機能・Windowsの機能の有効化または無効化→Telnetクライアント」のチェックボックスを有効にします。
2026.08.27 番外編 DNSトランスファー
2026.09.06 第0回 nginx を始めよう
2026.09.14 第1回 Ubuntu Server 設定
2026.09.24 第2回 DNS設定
2026.10.08 第3回 Nginxインストール
2026.10.21 第4回 PHPインストール
2026.10.29 第5回 MariaDB設定
2026.10.30 第6回 ファイアウォール設定
2026.10.31 第7回 認証サーバ設定
2026.11.01 第8回 メールサーバ設定
2026.11.02 第9回 Node.js設定
2026.11.03 第10回 アプリ作成
2026.11.04 第11回 crontab設定
2026.11.05 第12回 運用・保守

KEYESTUDIO Micro:bit V2ロボットスターターキット (マイクロビットなし) MakecodeとPython用
動き、光と音の使い方、障害物の検知と回避方法、線をたどり、IRリモコンとアプリでコントロールする方法を学びます。

Maqueen Lite V5 micro:bit ロボットキット STEM用(ライントレース&障害物回避)
Maqueen Lite V5 STEMロボットは、事前調整済みのライントレースアルゴリズム、耐衝撃モーター、開封即使用可能な設計で、ストレスを解消します。

たいていのことは100日あれば、うまくいく。長田英知著
「時間がなくて、なかなか自分のやりたいことができない」 「一念発起して何かを始めても、いつも三日坊主で終わってしまう」 「色んなことを先延ばしにしたまま、時間だけが過ぎていく」 そこで本書では、そんな著者が独自に開発した、 まったく新しい目標達成メソッド「100日デザイン」について、 その知識と技術を、余すところなくご紹介します。

まんがで納得ナポレオン・ヒル 思考は現実化する
OLとして雑務をこなす日々に飽き足らず、科学者だった父が残した薬品を商品化すべく、起業を決意した内山麻由(27)。彼女はセミナーで知り合った謎の女性からサポートを得ながら、彼女と二人三脚でナポレオン・ヒルの成功哲学を実践し、さまざまな問題を乗り越えていく。 ヒル博士の<ゴールデンルール>に従い、仕事に、恋に全力疾走する彼女の、成功への物語。

今日は人生最悪で最高の日 1秒で世界を変えるたったひとつの方法 ひすいこたろう著
偉人の伝記を読むと、最悪な日は、不幸な日ではなく、新しい自分が始まる日であることがわかります。最悪な出来事は、自分の人生が、想像を超えて面白くなる兆しなのです。偉人伝を読むことで、このときの不幸があったおかげで、未来にこういう幸せがくるのかと、人生を俯瞰する視線が立ち上がるのです。

ご飯は私を裏切らない heisoku著
辛い現実から目を背けて食べるご飯は、いつも美味しく幸せを届けてくれる。 29歳、中卒、恋人いない歴イコール年齢。バイト以外の職歴もなく、短期バイトを転々とする日々。ぐるぐると思索に耽るけど、ご飯を食べると幸せになれる。奇才の新鋭・heisokuが贈るリアル労働グルメ物語!

【最新版Gemini 3に対応!】できるGemini (できるシリーズ)
Geminiを「最強の知的生産パートナー」として使いこなすための、実践的なノウハウを凝縮した一冊です。 基本的な操作方法から、具体的なビジネスシーンでの活用、日々の業務を自動化するGoogle Workspaceとの連携、さらには自分だけのオリジナルAIを作成する方法まで余すところなく解説します。

Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
Rustの各手法や考え方を幅広く解説! 500以上のサンプルを掲載。実行結果も確認。 全24章の包括的なチュートリアル。

ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS… 全WEB媒体で効果バツグン! カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術

小型で便利な Type-C アダプター USB C オス - USB3.1 オスアダプター
Type-C端子のマイコンボードをこのアダプタを介して直接Raspberry Piに挿すことができます。ケーブルなしで便利なツールです。

Divoom Ditoo Pro ワイヤレススピーカー
15W高音質重低音/青軸キーボード/Bluetooth5.3/ピクセルアート 専用アプリ/USB接続/microSDカード

電源供給USBケーブル スリム 【5本セット】
USB電源ケーブル 5V DC電源供給ケーブル スリム 【5本セット】 電源供給 バッテリー 修理 自作 DIY 電子工作 (100cm)

Copyright © 2011-2027 Sarako Tsukiyono All rights reserved®.