web-dev-qa-db-ja.com

実際のLinuxユーザーなしでメールアカウントを設定する

UbuntuサーバーにPostfixとDovecotをセットアップしました。私の目的は、どこでもメールを送受信できる27のメールアカウントを作成することです。 Gmail、Yahoo、Outlookで迷惑メールとして表示されないようにするメールがあります。 Rainloopでメールを送信しますが、すべて問題ありません。を除く;

システムにはそれほど多くのユーザーがいるべきではありません。私が書いているように、このシステムには6人のユーザーがいます。ただし、個人のSudoユーザーとrootユーザーを除きます。 Linuxユーザーを作成し、資格情報を与えることで、メールを送受信するためのアクセス権を人々に与えます。

Yahooのような大きなメールサービスが1000万人以上のシステムユーザーを持っているとは想像できません。多くのLinuxを作成する代わりにすべてのメールユーザーが保存されているデータベース(おそらくMySQL?)にPostfix/Dovecotを接続できるソリューションがあるはずですユーザー。

それで、基本的に、既存のデータを失うことなく、前の段落で書いたものをどのように設定しますか?サーバーで受信した電子メールはあまりありませんが、データを失うことは悪い習慣であり、それを防ぐことは常にいいことです。

ありがとう!

5
shavit

正直なアドバイス、通常のユーザーアカウントを使用して、Linuxシステムにユーザーを認証させます。これは管理が簡単で、非常に安全です。他のシステムが安全でないとは言いたくありませんが、パスワードの保存と認証に関しては、私のLinuxシステムを信頼しています。これらのコマンドを使用して、ユーザーを手動で作成します。このようにして、彼らは私のシステムに害を及ぼすことはありません。

useradd -d /home/username -g 515 -u 603 -s /sbin/nologin username
echo 12345678 | passwd user --stdin

-g 515 is your groupid for mail users
-u 603 needs to be incremeted by one for each user you create

これはユーザーを削除します

userdel -f username

次に、ファイル/ etc/postfix/virtualにユーザーとして追加します

[email protected]    username

これは、master.cfで使用する部分です

submission inet n       -       n       -       -       smtpd
  -o smtpd_helo_required=no
  -o smtpd_tls_wrappermode=no
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous

ユーザーを追加または削除した後、次のコマンドを実行します

postmap /etc/postfix/virtual
service postfix restart

(最後のコマンドは、RHEL以外のクローン(Ubuntuなど)では異なる場合があります。わからないので、使用しないでください。) /etc/postfix/main.cfに次の設定を含めます

virtual_alias_maps = hash:/etc/postfix/virtual

Dovecotでmail_max_userip_connections変数を増やすことを忘れないでください DovecotがIMAP接続の最大数を無視する を参照してください。

6
Pozzo-Balbi

これを行うにはいくつかの方法があります。ただし、最も簡単な方法は、認証を行うソフトウェアを1つだけにすることです。この場合、Dovecot SASLを認証に使用するようにpostfixを構成できるため、これはDovecotになります。メールのディレクトリを管理するソフトウェアを1つだけ持つことも便利です。Postfixにそれ自体を行わせるのではなく、DovecotをLDA(別名「ファイルをディレクトリに置くソフトウェア」)として使用することをお勧めします。

以下に、私の構成から関連する部分を示しますが、それらは決して完全で機能する構成ではないことを覚えておいてください。私の完全なメールスタック構成を投稿しても意味がありませんが、正確なニーズはおそらく私のものとは異なります。

私はデータベースとしてPostgreSQLを使用していますが、MySQLも同様に機能します。dovecotに同梱されていない場合は、ドライバを変更し、一致するドライバをインストールしてください。

Postfix/main.cfから

virtual_mailbox_domains          = $mydomain, pgsql:/etc/postfix/pgsql_domains.cf
virtual_alias_maps               = pgsql:/etc/postfix/pgsql_aliases.cf
virtual_mailbox_maps             = pgsql:/etc/postfix/pgsql_mailboxes.cf

######################
### Authentication ###
######################
# Basic
smtpd_sasl_type                  = dovecot
smtpd_sasl_path                  = private/dovecot-auth
smtpd_sasl_auth_enable           = yes
smtpd_sasl_local_domain          = $mydomain

 # Allowed Methods
smtpd_tls_auth_only              = yes
smtpd_sasl_security_options      = noanonymous
smtpd_sasl_tls_security_options  = noanonymous

########################
### Mailbox Settings ###
########################
mail_spool_directory             = /srv/mail/localhost/
virtual_mailbox_base             = /srv/mail/
mailbox_command                  = /usr/lib/dovecot/dovecot-lda -f "$SENDER" -a 
"$RECIPIENT" -d "$USER"
virtual_transport                = dovecot

オープンリレーを作成しないように、クライアントの制限もpermit_sasl_authenticatedを含めるように設定し、送信メールの他の送信者は除外するようにしてください。

/etc/postfix/pgsql_domains.cfの内容

hosts   = /var/run/postgresql
user   = mail
dbname = mail
query  = SELECT DISTINCT 1 FROM users WHERE domain='%s';

/etc/postfix/pgsql_aliases.cfの内容

hosts = /var/run/postgresql
user   = mail
dbname = mail
query  = SELECT email||'@'||domain AS alias FROM users WHERE '%u'='users' AND domain='%d';

/etc/postfix/pgsql_mailboxes.cfの内容

hosts = /var/run/postgresql
user   = mail
dbname = mail
query  = SELECT 1 FROM email WHERE email='%u' AND domain='%d';

postfix/master.cfから

dovecot         unix    -       n       n       -       -       pipe
  flags=DRhu user=mail:mail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -a  ${recipient} -d ${user}@${nexthop}

Dovecot構成から(どこかに含まれるか、メイン構成に直接含まれるファイルに配置するかどうかは関係ありません):

service auth {
 #-- Default Socket
  unix_listener auth-userdb {
    mode = 0666
    user = mail
    group = mail
  }
 #-- Socket for Postfix
  unix_listener /var/spool/postfix/private/dovecot-auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

######################
### Authentication ###
######################

passdb {
  driver = sql
  args   = /etc/dovecot/conf.d/sql-login.conf.ext
}

userdb {
  driver          = sql
  args            = /etc/dovecot/conf.d/sql-login.conf.ext
}

#########################
### Location Settings ###
#########################
#   %u - username
#   %n - user part in user@domain, same as %u if there's no domain
#   %d - domain part in user@domain, empty if there's no domain
#   %h - home directory
mail_home             = /srv/mail/%d/%n
mail_location         = maildir:~/mai

/ var/spool/postfixを、postfixがchrootされている場所に調整します(ある場合は、そうでなければなりません)。

上記で参照した/etc/dovecot/conf.d/sql-login.conf.extの内容:

driver              = pgsql
connect             = Host=/var/run/postgresql/ dbname=mail user=mail
default_pass_scheme = SHA512
password_query      = SELECT email as username, domain, password FROM users WHERE email = '%n' AND domain = '%d';
user_query          = SELECT email as username, domain           FROM users WHERE email = '%n' AND domain = '%d';
iterate_query       = SELECT email as username, domain           FROM users;

(データベースのホスト、データベース名、ユーザー、そして場合によってはパスワードにも応じて、接続文字列を調整してください)

私のデータベースレイアウト:

           Table "mail.users"
    Column     |  Type   |   Modifiers
---------------+---------+---------------
 email         | text    | not null
 domain        | text    | not null
 password      | text    |
Indexes:
    "users_pkey" PRIMARY KEY, btree (email, domain)

これらは文字通り私のメール設定から取得されており、調整が必要であり、現在の設定に統合する必要があることに注意してください。これは、dovecotの場合に特に当てはまります。ディストリビューションには、configディレクトリに散らばっているファイルの一部の設定がある場合とない場合があります。dovecotディストリビューションでは多くのインクルードを使用するのが一般的です。

また、ユーザーの受信トレイフォルダー/上記の設定により、/ srv/mailにそれらが配置されることを確認し、dovecot-ldaがすべてのフォルダーに書き込みおよびアクセスできるようにします。上記の設定では、ローカルのメールユーザーのメールを/ srv/mail/localhostに配信して一貫性を確保していますが、これは完全にオプションであり、すでに持っている場所であればどこにでも配信できます。

いったん設定すれば、さらに多くのことができます-誰でもログインできるマスターユーザーの設定、一時的に無効になっているアカウントのブロックリストの設定、エイリアスメールの設定など。しかし、上記の内容は、DBに対して認証し、仮想ユーザーアカウントに電子メールを配信するには十分です。


[編集]:私はPostfix DOESがメールリレー、特にvirtual_domain、virtual_alias、virtual_mailbox設定のためにいくつかのルックアップを必要とすることに気づきました。関連パーツを追加しました。

1
Johannes H.