renamed virtual_users to virtual_mailboxes
This commit is contained in:
parent
c70bd7cd0f
commit
ea7cd9a612
4 changed files with 20 additions and 19 deletions
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
|
@ -29,6 +29,7 @@ organisation. So I replaced resource-hungry components by more lightweight softw
|
||||||
of RAM wasted for this little amount of data we need to store. So this guide uses _SQLite_ instead.
|
of RAM wasted for this little amount of data we need to store. So this guide uses _SQLite_ instead.
|
||||||
- rsyslogd was a classic choice to write log files like /var/log/mail.log. As Debian is using _systemd_ we no longer
|
- rsyslogd was a classic choice to write log files like /var/log/mail.log. As Debian is using _systemd_ we no longer
|
||||||
need rsyslogd and logrotate. The logs can be read using _journalctl_ instead.
|
need rsyslogd and logrotate. The logs can be read using _journalctl_ instead.
|
||||||
|
- The MariaDB table `virtual_users` is renamed to `virtual_mailboxes` because it resembles how Postfix calls them.
|
||||||
|
|
||||||
# Version changes
|
# Version changes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ Your mail server will have one fully qualified domain name — for example, `pos
|
||||||
domain is `example.com`. If someone visits `https://example.com/`, they might be greeted by the Roundcube webmail login
|
domain is `example.com`. If someone visits `https://example.com/`, they might be greeted by the Roundcube webmail login
|
||||||
page.
|
page.
|
||||||
|
|
||||||
But your server doesn’t have to handle only one domain. You might have users like:
|
But your server doesn’t have to handle only one domain. You might have mailboxes like:
|
||||||
|
|
||||||
- `jack@example.com`
|
- `jack@example.com`
|
||||||
- `lucy@example.com`
|
- `lucy@example.com`
|
||||||
|
|
@ -21,8 +21,8 @@ These are three different domains, and your server can handle them all.
|
||||||
|
|
||||||
This is what _virtual domains_ are for. You give your mail server a list of domains and email addresses and it will
|
This is what _virtual domains_ are for. You give your mail server a list of domains and email addresses and it will
|
||||||
receive emails for them. Your users will also have passwords that they need to type in to retrieve their emails. You can
|
receive emails for them. Your users will also have passwords that they need to type in to retrieve their emails. You can
|
||||||
even set up mailing lists that take messages sent to one address and forward them to several users at once.
|
even set up mailing lists that take messages sent to one address and forward them to several mailboxes at once.
|
||||||
|
|
||||||
To make all this work, we’ll store the configuration in a small MariaDB database. Postfix, Dovecot, and Roundcube will
|
To make all this work, we’ll store the configuration in a small MariaDB database. Postfix, Dovecot, and Roundcube will
|
||||||
all read from this database to know which domains exist, which users they have, and where each email should go. You will
|
all read from this database to know which domains exist, which mailboxes they have, and where each email should go. You
|
||||||
create that simple database on the next page.
|
will create that simple database on the next page.
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ Debian Trixie, we’ve disabled chroot mode for Postfix, which means we can now
|
||||||
By now you have an empty database and two user accounts to access it. Now you need three tables:
|
By now you have an empty database and two user accounts to access it. Now you need three tables:
|
||||||
|
|
||||||
- virtual_domains
|
- virtual_domains
|
||||||
- virtual_users
|
- virtual_aliases
|
||||||
- virtual_mailboxes
|
- virtual_mailboxes
|
||||||
|
|
||||||
Let's create the entire database schema in one go:
|
Let's create the entire database schema in one go:
|
||||||
|
|
@ -98,7 +98,16 @@ CREATE TABLE IF NOT EXISTS `virtual_domains` (
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `virtual_users` (
|
CREATE TABLE IF NOT EXISTS `virtual_aliases` (
|
||||||
|
`id` int(11) NOT NULL auto_increment,
|
||||||
|
`domain_id` int(11) NOT NULL,
|
||||||
|
`source` varchar(100) NOT NULL,
|
||||||
|
`destination` varchar(100) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `virtual_mailboxes` (
|
||||||
`id` int(11) NOT NULL auto_increment,
|
`id` int(11) NOT NULL auto_increment,
|
||||||
`domain_id` int(11) NOT NULL,
|
`domain_id` int(11) NOT NULL,
|
||||||
`email` varchar(100) NOT NULL,
|
`email` varchar(100) NOT NULL,
|
||||||
|
|
@ -108,15 +117,6 @@ CREATE TABLE IF NOT EXISTS `virtual_users` (
|
||||||
UNIQUE KEY `email` (`email`),
|
UNIQUE KEY `email` (`email`),
|
||||||
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
|
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `virtual_aliases` (
|
|
||||||
`id` int(11) NOT NULL auto_increment,
|
|
||||||
`domain_id` int(11) NOT NULL,
|
|
||||||
`source` varchar(100) NOT NULL,
|
|
||||||
`destination` varchar(100) NOT NULL,
|
|
||||||
PRIMARY KEY (`id`),
|
|
||||||
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
|
|
||||||
);
|
|
||||||
```
|
```
|
||||||
|
|
||||||
{/* <!-- prettier-ignore-end --> */}
|
{/* <!-- prettier-ignore-end --> */}
|
||||||
|
|
@ -138,13 +138,13 @@ represents a domain.
|
||||||
|
|
||||||
</Aside>
|
</Aside>
|
||||||
|
|
||||||
### virtual_users
|
### virtual_mailboxes
|
||||||
|
|
||||||
The second table contains information about your users. Each mail account requires one row in this table.
|
The second table contains information about your users. Each mail account requires one row in this table.
|
||||||
|
|
||||||
- **id**: A unique number identifying each row. It is set automatically.
|
- **id**: A unique number identifying each row. It is set automatically.
|
||||||
- **domain_id**: A [reference](https://en.wikipedia.org/wiki/Foreign_key) to the domain in the `virtual_domains` table.
|
- **domain_id**: A [reference](https://en.wikipedia.org/wiki/Foreign_key) to the domain in the `virtual_domains` table.
|
||||||
So each domain can have many virtual users.
|
So each domain can have many mailboxes.
|
||||||
- **email**: The email address of the mailbox.
|
- **email**: The email address of the mailbox.
|
||||||
- **password**: The hashed password of the mail account. It is prepended by the
|
- **password**: The hashed password of the mail account. It is prepended by the
|
||||||
[password scheme](https://doc.dovecot.org/main/core/config/auth/schemes.html). By default it is `{BLF-CRYPT}` also
|
[password scheme](https://doc.dovecot.org/main/core/config/auth/schemes.html). By default it is `{BLF-CRYPT}` also
|
||||||
|
|
@ -211,7 +211,7 @@ REPLACE INTO virtual_domains
|
||||||
(id, name)
|
(id, name)
|
||||||
VALUES (10,'example.org');
|
VALUES (10,'example.org');
|
||||||
|
|
||||||
REPLACE INTO virtual_users
|
REPLACE INTO virtual_mailboxes
|
||||||
(id, domain_id, password, email)
|
(id, domain_id, password, email)
|
||||||
VALUES (
|
VALUES (
|
||||||
1,
|
1,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue