メールサーバー設定 · 2 min read · Oct 13, 2025
Debian LennyでExim4、Clamav、Dovecot、SpamAssassinなどを使用してメールサーバーを設定する
DebianでExim4、Clamav、Dovecot、SpamAssassinなどを使用してメールサーバーを設定する
このハウツーは、スケーラブルで安全なフル機能のメールプラットフォームを構築する方法の一例を説明します。メールボックスの仮想ホスティングをmaildir形式で提供し、クォータやサーバー側のフィルタリング、ドメインエイリアス、アドレスエイリアス、アドレス転送、キャッチオールアドレスをサポートします。リレーはSTARTTLSとSMTP-AUTHで保護されています。受信メールはウイルス、スパムをチェックし、SPFポリシーおよびDNSBLに対して確認されます。
スケーラビリティを達成するために、セットアップは3つのサーバーに分割されます:
- 1つのMXサーバー(faramir.middle.earth)、ここにほとんどのセキュリティ機能があります
- 1つのSMTPリレー(ectelion.middle.earth)、ユーザーが外部にメールを送信できるようにします
- 1つのメールストアサーバー(denetor.middle.earth)、ここにメールボックスがあります
もちろん、DNS MXレコードを使用してドメインに追加のMXを追加したり、DNSラウンドロビンを使用して追加のリレーサーバーを追加したり、このハウツーで説明されているメカニズムを使用して追加のメールストアを追加することができます。逆に、MXとリレー部分、またはリレーとメールストア部分を簡単に統合することができます。MXとメールストアを統合するには、いくつかの変更が必要です。
前提条件
このハウツーでは、動作するDebianサーバーがあると仮定します。また、sudoがシステムにインストールされている必要があり、あなたはsudoerでなければなりません。
LDAPの設定
ユーザー情報はLDAPディレクトリに保存されます。ここでは、リレーサーバーにインストールします。
まず、必要なパッケージをインストールしましょう:
sudo apt-get install slapd ldap-utilsチュートリアルでは、以下のLDAPパラメータを使用します:
ldapBase: dc=middle,dc=earth
adminDn: cn=admin,dc=middle,dc=earth
adminPwd: thirdAge
さらに、特定のLDAPスキーマを使用します。ほとんどの属性とオブジェクトは標準ですが、一部は例外です。注意:多くの標準属性があるため、重複して定義されないように注意してください。
それでは、/etc/ldap/schema/mailMEO.schemaにスキーマを追加しましょう:
attributetype ( 2.16.840.1.113730.3.1.13
NAME 'mailLocalAddress'
DESC 'この受信者のRFC822メールアドレス'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 2.16.840.1.113730.3.1.16
NAME 'mailQuota'
DESC 'メールボックスの最大ディスクスペース(キロバイト単位)'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
attributetype ( 2.16.840.1.113730.3.1.18
NAME 'mailHost'
DESC 'この受信者のSMTP/MTAのFQDN'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
SINGLE-VALUE )
attributetype ( 2.16.840.1.113730.3.1.22
NAME 'mailCopyAddress'
DESC 'RFC822メールのシャドウコピーアドレス'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 2.16.840.1.113730.3.1.47
NAME 'mailRoutingAddress'
DESC 'この受信者のRFC822ルーティングアドレス'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 2.16.840.1.113730.3.1.49
NAME 'spamassassinUserPrefs'
DESC 'SpamAssassinユーザー設定'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
objectclass ( 2.16.840.1.113730.3.2.147
NAME 'inetLocalMailRecipient'
DESC 'インターネットローカルメール受信者'
SUP top AUXILIARY
MAY ( mailLocalAddress $ mailHost $ mailRoutingAddress $ mailCopyAddress $ mailQuota $ spamassassinUserPrefs ) )
objectclass ( 2.16.840.1.113730.3.2.148
NAME 'inetMailForwarder'
DESC 'インターネットメール転送アドレス'
SUP top AUXILIARY
MAY ( mailHost $ mailRoutingAddress ) )次に、/etc/ldap/slapd.confに必要なスキーマを追加してください:
...
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/mailMEO.schema
...… そしてサフィックスを確認します(debconfはslapdをインストールしたときにすでに設定しているはずです):
suffix "dc=middle,dc=earth"次に、デーモンがLDAPにバインドするために必要なACLをいくつか追加します。
dovecot用のuserPassword属性への読み取り専用アクセス:
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=middle,dc=earth" write
by dn="uid=dovecot,dc=middle,dc=earth" read
by anonymous auth
by self write
by * noneeximとdovecot用の他の属性への読み取り専用アクセス:
access to *
by dn="cn=admin,dc=middle,dc=earth" write
by dn="uid=dovecot,dc=middle,dc=earth" read
by dn="uid=exim,dc=middle,dc=earth" read
by * read
by anonymous none最後のACLは匿名の読み取りを無効にしますが、すべての認証ユーザーの読み取り(検索)を有効にします。これは望ましくないかもしれません。
変更を適用するためにslapdを再起動できます:
sudo /etc/init.d/slapd restart前のACLのユーザーを作成する必要があります。それを行うために、以下のuser.ldifファイルを使用します:
dn: uid=exim,dc=middle,dc=earth
objectClass: account
objectClass: simpleSecurityObject
objectClass: top
uid: exim
userPassword:: e01ENX1hOElTeXAwV2hnVzFSVnhHd0hCNDF3PT0=
dn: uid=dovecot,dc=middle,dc=earth
objectClass: account
objectClass: simpleSecurityObject
objectClass: top
uid: dovecot
userPassword:: e01ENX1yZGp2Q1lPNmtDRm1scXAyVWQwa0xBPT0=ユーザー/パスは:
dovecot/dovecotpopperexim4/eximmta ディレクトリにデータを追加するには:
ldapadd -x -D cn=admin,dc=middle,dc=earth -W < users.ldif以下はサンプルデータを含む別のldifファイルです(注意:このサンプルには、あなたのセットアップには適さないIPアドレスが含まれていますので、手動で変更してください):
dn: ou=domains,dc=middle,dc=earth
objectClass: organizationalUnit
objectClass: top
ou: domains
dn: dc=middle.earth,ou=domains,dc=middle,dc=earth
dc: middle.earth
objectClass: dNSDomain
objectClass: top
objectClass: inetLocalMailRecipient
objectClass: domainRelatedObject
objectClass: posixAccount
mailLocalAddress: [email protected]
cn: catchall
gidNumber: 8
homeDirectory: /var/mail/middle.earth/c/catchall
uid: catchall
uidNumber: 8
userPassword:: e01ENX1EV3RteGErOFROanJKNUFXZWt1Z0tBPT0=
mailQuota: 102400
mailHost: denetor.middle.earth
associatedDomain: middle.earth
associatedDomain: lotr.middle.earth
dn: uid=sam,dc=middle.earth,ou=domains,dc=middle,dc=earth
cn: sam
displayName: Sam Gamji
gidNumber: 8
homeDirectory: /var/mail/middle.earth/s/sam
mail: [email protected]
mailHost: 172.16.16.23
mailQuota: 102400
objectClass: inetLocalMailRecipient
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
sn: Gamji
uidNumber: 8
uid: sam
userPassword:: e01ENX1NeVV5M1BxaHkvWWVLaVpyMXlOaExBPT0=
mailLocalAddress: [email protected]
mailLocalAddress: [email protected]
mailLocalAddress: [email protected]
dn: uid=frodo,dc=middle.earth,ou=domains,dc=middle,dc=earth
cn: frodo
displayName: Frodo Baggins
gidNumber: 8
givenName: Frodo
homeDirectory: /var/mail/middle.earth/f/frodo
mail: [email protected]
mailHost: 172.16.16.23
mailQuota: 102400
objectClass: inetLocalMailRecipient
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
sn: Baggins
uidNumber: 8
uid: frodo
userPassword:: e01ENX04UGlDRHVnWEdCMmNhRktnbDljTmpRPT0=
mailLocalAddress: [email protected]
mailLocalAddress: [email protected]
mailLocalAddress: [email protected]
dn: uid=gmail,dc=middle.earth,ou=domains,dc=middle,dc=earth
cn: gmail
mail: [email protected]
mailHost: 172.16.16.23
mailRoutingAddress: [email protected]
objectClass: inetMailForwarder
objectClass: inetOrgPerson
objectClass: top
sn: alias to Gmail address
uid: gmail
``新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。