NixOSでPostfixとDovecotによるメールサーバの構築

前回の記事では、新規に作成したNixOSに.nixファイルを適用し前々回の記事で構築したDNSサーバを再現。クライアント端末にて正引きや逆引きの名前解決の動作確認を行った。
今回は、当ブログの著者の家庭内の環境にて動作させるローカルなメールサーバを導入すべく、PostfixとDovecotを導入し簡単なメールサーバの構築と動作確認を行った。
過去の記事について NixOSネタの記事の一覧は、当記事内最下部の「NixOS関連の記事」欄内を参照。

2025/4/19追記 Postfix+Dovecot環境のSASL認証設定に関しては以下の記事を参照。
https://debslink.hatenadiary.jp/entry/20250419/1745062553 NixOSでPostfixとDovecotによるメールサーバの構築 - SASL認証編



メールサーバについて
今回は、PostfixとDovecotを利用する。
Postfixは、主にLinuxなどUNIX系のOSで利用されるメール転送エージェント(MTA)である。MTAは、電子メールの送受信を管理するソフトウェアで、メールを送信者から受信者へと転送する役割を担う。Sendmailなどの古いMTAと比較すると設定が比較的簡単であり、リソースの使用が効率的であると言われている。
DovecotもLinuxなどUNIX系のOSで利用されている電子メールサーバのソフトウェアで、受信用のメールサーバとして多く利用されている。POP3やIMAP4で電子メールをメールクライアントに送り届ける役割を担う。
非常に雑な言い方をすると、Postfixがメールを受け取ったり送ったりする郵便配達員、Dovecotは郵便ポストや私書箱...といった感じである。ちなみにDovecotは直訳すると「鳩小屋」である。



当方の環境
ホスト機:macOS 15.4 / MacBook Pro 2020 / RAM: 16GB / CPU: Intel Core i5 2.0GHz
仮想化環境:Oracle VirtualBox 7.1.6 r167084
ゲストOS:NixOS 24.11 (Vicuna)
MTA:Postfix 3.9.3
POP3/IMAP4サーバ:Dovecot 2.3.21.1
メールクライアント:nPOP 1.2.6
PostfixとDovecotでメールサーバを構築した後、動作確認用の端末(Windows 10)にてnPOPというメールクライアントを使用しメールの送受信を行う事で動作確認を実施した。

NixOSのログインアカウントはhechtia(家で栽培しているパイナップル科植物)にした。メールの送受信の際にも使用。過去の記事ではuserだったがusrディレクトリと紛らわしい為に変えた。



今回の要件
NixOSをDNSサーバ、Windows 10 22H2をクライアントとして使用する。
NixOSを新規に立ち上げてPostfixとDovecotを導入。Windows 10にて動作しているメールクライアントnPOPにてメールサーバの設定をNixOSに設定し、メールの送受信を実施する事でPostfixとDovecotの動作確認を行う。
機能てんこ盛りなシステムは嫌なので、前々回の記事作成のDNSサーバと同様に、メールサーバ用にNixOSを新規に立ち上げてPostfixとDovecotのインストールや設定や動作確認を行った。NixOSのインストールおよび初期設定は以下の内容を実施した。
https://debslink.hatenadiary.jp/entry/20250311/1741649715 NixOSの沼に片足を突っ込んだ
https://debslink.hatenadiary.jp/entry/20250320/1742459549 NixOSの環境構築(今回はneofetch未導入)
 
ざっくりとした要件は以下のとおり。
・家庭内というローカル環境且つ動作確認目的での導入という理由から、SSLとSASL関連の機能は使用しない。
・Sieveなどメールのフィルタリング機能は使用しない。
・Postfix + LMTPでメールのローカル転送機能を有効にする。
・Dovecotにてメールの保存先はフルパスで指定。"maildir:~/.mail"だと見に行ってくれなかった為。
・メール送受信確認で使用するメールクライアントはnPOPを使用。設定が楽。
・PostfixとDovecotの設定は/etc/nixos/configuration.nixファイルの中に追記するのではなく、/etc/nixos/postfix.nixファイルと/etc/nixos/dovecot2.nixを新規作成しその中に記載する。
 
設定に取り掛かる前に、今の動作環境を出力。

[testsv99:~ ]# uname -a
Linux testsv99 6.6.82 #1-NixOS SMP PREEMPT_DYNAMIC Sun Mar  9 08:55:04 UTC 2025 x86_64 GNU/Linux
[testsv99:~ ]# 
[testsv99:~ ]# zsh --version
zsh 5.9 (x86_64-pc-linux-gnu)
[testsv99:~ ]# 

 


PostfixとDovecotのインストールと設定

1. PostfixとDovecotをインストールする為の設定
PostfixパッケージとDovecotパッケージの導入設定と、PostfixとDovecotの設定を済ませる。
/etc/nixos/configuration.nixファイル内の上の方に有るimportsの項目にて、Postfixの設定ファイル/etc/nixos/postfix.nixとDovecotの設定ファイル/etc/nixos/dovecot2.nixを読み込ませる設定を追記する。
ただし、/etc/nixos/postfix.nixファイルや/etc/nixos/dovecot2.nixファイル作成せず/etc/nixos/configuration.nixファイル内にPostfixとDovecotの設定を書く場合は、/etc/nixos/configuration.nixファイルに./postfix.nixと./dovecot2.nixを追記する必要は無い。

[testsv99:~ ]# sudo nvim /etc/nixos/configuration.nix

{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
      ./ssh.nix
      ./zsh.nix
      ./nvim.nix
      ./chrony.nix
      ./dovecot2.nix ◻️◻️追記 dovecotでもよい
      ./postfix.nix  ◻️◻️追記
    ];
:
省略
:

 
続いて、/etc/nixos/configuration.nixファイル内に、以下のようにPostfixパッケージとDovecotパッケージのインストールの設定を追記する。

:
省略
:
  # List packages installed in system profile. To search, run:
  # $ nix search wget
  environment.systemPackages = with pkgs; [
  #  vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
    zsh
    neovim
    chrony
    dovecot ◻️◻️追記 こっちはdovecot2ではなくdovecot
    postfix ◻️◻️追記
  ];
:
省略
:


NixOSにてファイアウォール設定を使用している場合、ポートを追記する。
元々ファイアウォール設定を有効にしていない場合は以下の設定は不要である。

Postfix:TCP/25、TCP/587(SMTP)
Dovecot:TCP/110(POP)またはTCP/143(IMAP)、TCP/24(LMTP)
ssh:TCP/22
chrony:TCP/123

:
省略
:
  # Open ports in the firewall.
  # networking.firewall.allowedTCPPorts = [ ... ];
  # networking.firewall.allowedUDPPorts = [ ... ];
  # Or disable the firewall altogether.
  # networking.firewall.enable = false;
  networking.firewall.enable = true;
  networking.firewall.allowPing = true;
  networking.firewall.interfaces."enp0s3".allowedTCPPorts = [ 22 24 25 110 123 143 587 ];
  networking.firewall.interfaces."enp0s3".allowedUDPPorts = [ 123 587 ];
:
省略
:

 

2. Postfixの設定
他のLinuxディストリビューションで言う/etc/postfix/main.cfや/etc/postfix/master.cf的な、以下の/etc/nixos/postfix.nixファイルを作成する。
以下の設定を/etc/nixos/configuration.nixファイル内に書く事は可能だが、当記事では/etc/nixos/postfix.nixファイルに分けて書く方を採用する。
 
test.localをドメインとし、Private IPアドレスからの通信のみ転送する。
以下に貼り付けた設定内容では、sendmail_pathとmailq_pathの行は自分の環境でのパスを記載している。PostfixとDovecotのインストール後にfindコマンドでsendmailコマンドとmailqコマンドのパス確認し、各環境に合ったものに修正する必要が有る。この件については「3. Dovecotの設定」の下部にて言及した。
自分の環境では家庭内環境用として動作させる為、プライベートIPアドレスからの通信のみ転送する設定にし、SASLやTLS関連の設定はコメントアウトしている。

※以下の設定例は行数多めにつき、Webブラウザによって全て表示しきれない事があります。その場合は黒塗りの箇所をスクロールする事で終わりまで表示する事が出来ます。

[testsv99:~ ]# sudo nvim /etc/nixos/postfix.nix   
{ config, pkgs, lib, ... }:
{
  services.postfix = {
    enable = true;
    config = {
      myhostname = "testsv99.local";
      mydomain = "local";
      inet_interfaces = "all";
      inet_protocol = "ipv4";
      mail_owner = "postfix";
      myorigin = "$mydomain";

      sendmail_path = "/nix/store/ynccbl3k3p3b3gr38sxhkgqjfmlgz5a7-postfix-3.9.3/bin/sendmail";
      mailq_path = "/nix/store/ynccbl3k3p3b3gr38sxhkgqjfmlgz5a7-postfix-3.9.3/bin/mailq;";
      #newaliases_path = "/usr/bin/newaliases.postfix";
      setgid_group = "postdrop";
      html_directory = "no";
      #manpage_directory = "/usr/share/man";
      #sample_directory = "/usr/share/doc/postfix/samples";

      mydestination = [
        "$myhostname" "localhost.$mydomain" "localhost" "$mydomain"
      ];
      mynetworks = [
        "10.0.0.0/8" "172.16.0.0/12" "192.168.0.0/16" "127.0.0.0/8"
      ];
      home_mailbox = "/Maildir";

      smtp_use_tls = "no";
      smtp_sasl_auth_enable = "no";
      broken_sasl_auth_clients = "yes";
      #smtp_sasl_security_options = "";

      disable_vrfy_command = "yes";
      smtpd_helo_required = "yes";

      #smtpd_sasl_type = "dovecot";
      #smtpd_sasl_path = "/run/dovecot2/auth";
      #smtpd_sasl_security_options = "noanonymous";
      #smtpd_sasl_local_domain = "$myhostname";
      #smtpd_relay_restrictions = [
      #  "permit_mynetworks" "permit_sasl_authenticated" "reject_unauth_destination"
      #];
      #smtpd_tls_cert_file = "/etc/pki/tls/certs/postfix.pem";
      #smtpd_tls_key_file = "/etc/pki/tls/private/postfix.key";
      #smtpd_tls_security_level = "may";
      #smtp_tls_CAauth = "/etc/pki/tls/certs/";
      #smtp_tls_CAfile = "/etc/pki/tls/certs/ca-bundle.crt";
      #smtp_tls_security_level = "may";
      #smtpd_sasl_auth_enable = true;
     };
  };
}
[testsv99:~ ]# 


3. Dovecotの設定
他のLinuxディストリビューションで言う以下のファイルをNixOSでは1つにまとめて作成する事が出来る。
/etc/dovecot/conf.d/10-auth.conf
/etc/dovecot/conf.d/10-master.conf
/etc/dovecot/conf.d/10-ssl-conf
/etc/dovecot/conf.d/10-mail.conf
/etc/dovecot/dovecot.conf

IMAP、POP3、LMTPの各機能を有効にする設定と使用するポートを記載している。
メールの保存先のパスの設定services.dovecot2.mailLocationは、フルパスで指定している。
nPOPで受信メールの通知およびメールの内容確認をする為には、LMTPを有効にし(enableLmtp = true;)、ポート番号24を明記する必要がある。

※以下の設定例は行数多めにつき、Webブラウザによって全て表示しきれない事があります。その場合は黒塗りの箇所をスクロールする事で終わりまで表示する事が出来ます

[testsv99:~ ]# sudo nvim /etc/nixos/dovecot2.nix                                                                                                       
{
  services.postfix = {
    enable = true;
  };
  services.dovecot2 = {
    enable = true;
    enablePop3 = true;
    enableImap = true;
    enableLmtp = true;
    protocols = [ "imap" "pop3" ];
  };
  #services.dovecot2.mailLocation = "maildir:~/.mail";
  services.dovecot2.mailLocation = "/var/spool/mail/hechtia";
  services.dovecot2.extraConfig = ''
    listen = *
    disable_plaintext_auth = no
    auth_mechanisms = plain login
    ssl = no
    namespace inbox {
      inbox = yes
      }
    service imap-login {
      inet_listener imap {
        port = 143
      }
    }
    service pop3-login {
      inet_listener pop3 {
        port = 110
      }
    }
    service lmtp {
      inet_listener lmtp {
        port = 24
      }
    }
 '';
}
[testsv99:~ ]#  


ここで一旦sudo nixos-rebuild switchを実行し、NixOSにPostfixとDovecotをインストールおよび設定内容の読み込みを実施。
 
sudo nixos-rebuild switchコマンドがエラーを吐かず正常に完了したら上記にて記載したとおり、/etc/nixos/postfix.nixファイル内でsendmail_pathとmailq_pathのパスを確認すべく、find / -name sendmailコマンドとfind / -name mailqコマンドを管理者権限で実行する。
出力されたパスの中に「postfix-3.9.3/bin/」を含むパスをsendmail_pathおよびmailq_pathにて書き換え、再度sudo nixos-rebuild switchコマンドを実行し変更箇所を読み込ませる。
ただし、パスが全く同一である場合はsendmail_pathとmailq_pathのパスを書き換える必要は無く、再度sudo nixos-rebuild switchを実行する必要も無い。
 
sendmail_pathおよびmailq_pathのパスの書き換えの有無を問わず、最後にrebootコマンドでNixOSを再起動させる。

[testsv99:~ ]# sudo nixos-rebuild switch           
building Nix...
building the system configuration...
:
省略
:
[testsv99:~ ]# sudo reboot
Broadcast message from root@testsv99 on pts/1 (Wed 2025-04-16 22:58:22 JST):

The system will reboot now!
:
省略
:
[testsv99:~ ]#

 

4. PostfixサービスとDovecotサービスの有効化
sudo nixos-rebuild switchコマンドとsudo rebootコマンドが問題無く実行完了したら、以下のコマンドを叩き、PostfixサービスとDovecotサービスを再起動させる。
PostfixサービスおよびDovecotサービスが動いていなかった場合は立ち上げる。

[testsv99:~ ]# sudo systemctl restart postfix
[testsv99:~ ]# 
[testsv99:~ ]# sudo systemctl restart dovecot2
[testsv99:~ ]# 

 

5. nPOPのインストールと設定
動作確認用の電子メールクライアントとしてnPOPを使用。
nPOPのインストーラをダウンロードし、Windows 10端末にnPOPをインストールする。
https://nakka.com/soft/npop/ nPOP
 
nPOPのインストール後、nPOPを立ち上げてアカウントとメールの送受信の設定を行う。
自分の環境では、以下の内容で設定した。
 
① メール送受信の設定
ファイル>オプション>受信
・「新着取得時に本文全文を全て受信」にチェック
・メール一覧の保存:ヘッダと本文を保存
ファイル>オプション>送信
・'Message-Id'を送信にチェック
・'Date'を送信にチェック
・送信箱に保存で送信箱を表示にチェック
ファイル>オプション>チェック
・「新着メールがあるときメッセージボックスを出す」にチェック
ファイル>オプション>その他
・「タスクトレイにアイコン表示」にチェック

② アカウントの設定
アカウント>設定>受信
・アカウント名:hechtia
・POP設定>POP3サーバ:192.168.3.247
・POP設定>ポート番号:110
・POP設定>ユーザ名:hechtia
・POP設定>パスワード:任意の文字列、その下の設定項目にはチェック入れてない
アカウント>設定>送信
・SMTP設定>名前:hechtia
・SMTP設定>メールアドレス
・SMTP設定>SMTPサーバ:192.168.3.247
・SMTP設定>ポート番号:25、その下の設定項目にはチェック入れてない
アカウント>設定>作成:空欄
アカウント>設定>フィルタ:フィルタの使用にチェック入れてない
 


メールサーバの動作確認
PostfixとDovecotの設定およびクライアント側でnPOPの設定を終えたところで、クライアント側にてnPOPでテストメールの作成および送受信を行い、クライアント側にメールが正常に届いているか確認する。
 
1. メールの作成と送受信
電子メールクライアントnPOPを使用したメールの作成およびメールの送受信の手順は以下のとおり。

① テストメールの作成
nPOPを立ち上げ、nPOPのウインドウ内上部にある手紙のアイコン(送受信の左下にあるアイコン)をクリックし、メールを作成する。
・アカウント:上記で作成したアカウントを選択
・宛先:当環境ではhechtia@localとした
・件名:当環境ではtestとした
・本文:OKをクリックし、メール編集のウインドウ内の空欄に本文を書く
 
② メールの送信
手紙のアイコン(ファイルの左下にある手紙のアイコン)をクリックし、「送信してよろしいですか?」で「はい」をクリックしメールを送信。
正常に送信が完了すると、送信箱の欄内にて送信したメールおよび送信した日時、一番左側のメールのアイコンが表示される。
送信が失敗した場合、メールのアイコンにバツが付いて表示される。
 
③ メールの受信
nPOPのウインドウ内の件名に上にある [送信箱] をクリックし、上記で作成したアカウントを選択。
青い郵便受けのようなアイコン(新着チェック)をクリックする。
正常にメールを受信出来た場合、受信メールの一覧と、ウインドウ内下部に「表示1/1サーバ1」と「新着1, 未開封1」等が表示される。
受信したメールをダブルクリックし、受信メールの本文を確認する。


2. 確認結果
クライアント側でnPOPでメールの作成および送受信を行い、メールを受信する事が出来た。これによりPostfixとDovecotによるメールサーバの構築が問題無く完了した事を確認出来た。
sudo systemctl status postfixコマンドおよびsudo systemctl status dovecot2コマンドを叩く事で、メールの送受信の際の簡単なログを確認する事が出来る。メールの送信および受信が失敗した場合、どの段階でコケたかによるが、sudo systemctl status postfixコマンドおよびsudo systemctl status dovecot2コマンドの出力ログにて確認する事が出来る。
以下は、sudo systemctl status postfixコマンドの出力内容。Postfixの動作の流れがログで出力されている。

[testsv99:~ ]# sudo systemctl status postfix  
[sudo] password for hechtia: 
● postfix.service - Postfix mail server
     Loaded: loaded (/etc/systemd/system/postfix.service; enabled; preset: ignored)
     Active: active (running) since Wed 2025-04-16 23:46:23 JST; 15min ago
 Invocation: dd0db21e1278421aa90279f2f08944a6
    Process: 1464 ExecStart=/nix/store/ynccbl3k3p3b3gr38sxhkgqjfmlgz5a7-postfix-3.9.3/bin/postfix start (code=exited, status=0/SUCCESS)
   Main PID: 1545 (master)
         IP: 888B in, 777B out
         IO: 2.5M read, 12K written
      Tasks: 8 (limit: 4662)
     Memory: 14M (peak: 14.3M)
        CPU: 516ms
     CGroup: /system.slice/postfix.service
             ├─1545 /nix/store/ynccbl3k3p3b3gr38sxhkgqjfmlgz5a7-postfix-3.9.3/libexec/postfix/master -w
             ├─1546 pickup -l -t unix -u
             ├─1547 qmgr -l -t unix -u
             ├─1601 smtpd -n smtp -t inet -u -o stress= -s 2
             ├─1602 proxymap -t unix -u
             ├─1603 trivial-rewrite -n rewrite -t unix -u
             ├─1604 cleanup -z -t unix -u
             └─1605 local -t unix

Apr 16 22:46:22 testsv99 postfix/postfix-script[1543]: starting the Postfix mail system
Apr 16 22:46:23 testsv99 postfix/master[1545]: daemon started -- version 3.9.3, configuration /etc/postfix
Apr 16 22:46:23 testsv99 systemd[1]: Started Postfix mail server.
Apr 16 22:01:25 testsv99 postfix/smtpd[1601]: connect from unknown[192.168.3.32]
Apr 16 22:01:25 testsv99 postfix/smtpd[1601]: 5722810003E: client=unknown[192.168.3.32]
Apr 16 22:01:25 testsv99 postfix/cleanup[1604]: 5722810003E: message-id=<20250417080125.FD5FBBE0.hechtia@local>
Apr 16 22:01:25 testsv99 postfix/qmgr[1547]: 5722810003E: from=<hechtia@local>, size=432, nrcpt=1 (queue active)
Apr 16 22:01:25 testsv99 postfix/smtpd[1601]: disconnect from unknown[192.168.3.32] helo=1 mail=1 rcpt=2 data=1 rset=1 quit=1 commands=7
Apr 16 22:01:25 testsv99 postfix/local[1605]: 5722810003E: to=<hechtia@local>, relay=local, delay=0.17, delays=0.14/0.03/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
Apr 16 22:01:25 testsv99 postfix/qmgr[1547]: 5722810003E: removed
[testsv99:~ ]#

 
以下は、sudo systemctl status dovecot2コマンドの出力内容。Dovecotの動作の流れがログで出力されている。

[testsv99:~ ]# sudo systemctl status dovecot2
● dovecot2.service - Dovecot IMAP/POP3 server
     Loaded: loaded (/etc/systemd/system/dovecot2.service; enabled; preset: ignored)
     Active: active (running) since Thu 2025-04-16 22:46:31 JST; 15min ago
 Invocation: 54b4f303053f4f2ca0a32ce847ec68ff
    Process: 1572 ExecStartPre=/nix/store/8k0h3mw8087bkh9d91z5wf2k1jr03frg-unit-script-dovecot2-pre-start/bin/dovecot2-pre-start (code=exited, status=0/SUCCESS)
   Main PID: 1575 (dovecot)
     Status: "v2.3.21.1 (d492236fa0) running"
         IP: 525B in, 1.3K out
         IO: 3.5M read, 16K written
      Tasks: 7 (limit: 4662)
     Memory: 8.7M (peak: 24.7M)
        CPU: 175ms
     CGroup: /system.slice/dovecot2.service
             ├─1575 /nix/store/sabzq7mwpwadrqd02j9lir113rrd4hhh-dovecot-2.3.21.1/sbin/dovecot -F
             ├─1576 dovecot/anvil
             ├─1577 dovecot/log
             ├─1578 dovecot/config
             ├─1607 dovecot/stats
             ├─1608 dovecot/auth
             └─1609 dovecot/auth -w

Apr 16 22:46:31 testsv99 systemd[1]: Starting Dovecot IMAP/POP3 server...
Apr 16 22:46:31 testsv99 dovecot[1575]: master: Dovecot v2.3.21.1 (d492236fa0) starting up for imap, pop3, imap, pop3, lmtp
Apr 16 22:46:31 testsv99 systemd[1]: Started Dovecot IMAP/POP3 server.
Apr 16 22:01:35 testsv99 dovecot[1577]: pop3-login: Login: user=<hechtia>, method=PLAIN, rip=192.168.3.32, lip=192.168.3.247, mpid=1612, session=<Ka5XRO0y6MDAqAMg>
Apr 16 22:01:35 testsv99 dovecot[1577]: pop3(hechtia)<1612><Ka5XRO0y6MDAqAMg>: Disconnected: Logged out top=0/0, retr=1/537, del=0/3, size=1637
[testsv99:~ ]# 

 

以下の画像は、メールの送受信が初めて出来た時のクライアント側のスクリーンショット。
業務にてPostfixとDovecotに少し触れた事が有るためか、前々回の記事にて扱ったBIND程は苦戦しなかった。


今回はここまで。
NixOSでサーバを構築する際の.nixファイルの作成に慣れてきつつある中で、NixOS Search Optionsにて検索しても出てこない設定はBINDに限らずextraConfigでシングルクォーテーションで囲んで設定値を記載すれば、Nix言語の文法から少し崩れた書きっぷりであっても読み込んでくれる事に気が付いた。NixOSをサーバ用途で利用するシーンは非常に少ない事によるものなのだろうか、PostfixやDovecotだけでなくBINDも含め、サーバの設定値がNix言語に訳しきれていないのだろう。



振り返り
メールの送信および送信確認までなら2日前には既に完了していたが、メールの受信は出来ていなかった。
クライアント端末のメールソフトにてメールを受信し内容を確認する為には、DovecotにてLMTPの設定を追加し、NixOSのファイアウォールにてTCP/24の通信を許可する設定を追記する必要があった。
NixOSに触れ始めてから1ヶ月が経過した。他のLinuxディストリビューションや*BSDなどとは違う独特な設定および運用方法、システムの簡単なロールバックと再現性、気が付いたら仮想HDDの消費が100%近くに達している...と今まで知らなかった世界を楽しみつつある状態。(楽しみつつ...と表現しているのは、Flakeとhome-managerに殆ど触れていないため)
気が付いたらNixOSの沼に両足を突っ込んでいた。まだ脛の辺りまでしか浸かっていないのでいつでも後戻りはできる。そろそろIPネットワークの世界に戻る?いや、もう少しの間このままNixOSの沼に足を突っ込んでいよう。
 


参照サイト
https://nixos.org/ Nix & NixOS Declarative builds and deployments
https://nixos.org/manual/nixos/stable/ NixOS Manual
https://search.nixos.org/packages NixOS Search Packages
https://search.nixos.org/options? NixOS Search Options
https://wiki.nixos.org/wiki/Postfix_for_Gmail Postfix for Gmail
https://wiki.nixos.org/wiki/Dovecot Dovecot
https://www.postfix.org/ The Postfix Home Page
https://www.dovecot.org/ Dovecot The Secure IMAP server
https://centossrv.com/postfix.shtml メールサーバー構築(Postfix+Dovecot)
https://nakka.com/soft/npop/ nPOP
 


NixOS関連の記事
https://debslink.hatenadiary.jp/entry/20250311/1741649715 NixOSの沼に片足を突っ込んだ
https://debslink.hatenadiary.jp/entry/20250316/1742128054 NixOSにFlakeを導入した
https://debslink.hatenadiary.jp/entry/20250320/1742459549 NixOSの環境構築
https://debslink.hatenadiary.jp/entry/20250323/1742731080 NixOSでSFTPサーバの設定
https://debslink.hatenadiary.jp/entry/20250328/1743167901 NixOSでSambaによるファイルサーバの構築
https://debslink.hatenadiary.jp/entry/20250405/1743844940 NixOSでrsyslogの設定
https://debslink.hatenadiary.jp/entry/20250411/1744300480 NixOSでDNSサーバの構築
https://debslink.hatenadiary.jp/entry/20250413/1744551596 NixOSのシステムの再現性の検証
https://debslink.hatenadiary.jp/entry/20250418/1744924524 NixOSでPostfixとDovecotによるメールサーバの構築
https://debslink.hatenadiary.jp/entry/20250419/1745062553 NixOSでPostfixとDovecotによるメールサーバの構築 - SASL認証編
https://debslink.hatenadiary.jp/entry/20250421/1745236668 NixOSのパッケージやOSのアップデートに関するメモ
https://debslink.hatenadiary.jp/entry/20250428/1745795434 NixOSをCLIでインストールした
https://debslink.hatenadiary.jp/entry/20250503/1746235454 NixOSでnginxによるWebサーバの構築
https://debslink.hatenadiary.jp/entry/20250508/1746706416 NixOSでPrometheusとGrafanaによる監視基盤の構築
https://debslink.hatenadiary.jp/entry/20250510/1746884897 NixOSの導入にあたり参考になったサイト
https://debslink.hatenadiary.jp/entry/20250524/1748072722 NixOSを24.11から25.05にアップデートした
https://debslink.hatenadiary.jp/entry/20251214/1765688458 NixOSを25.05から25.11にアップデートした
https://debslink.hatenadiary.jp/entry/20260117/1768615582 Raspberry Pi 4BにNixOSを導入しファイルサーバを構築した
https://debslink.hatenadiary.jp/entry/20260503/1777775392 NixOSで構築したサーバの運用について