Requisitos

🦀

Rust ≥ 1.75

Compilador Rust estável. Instale via rustup.rs

📬

Postfix ≥ 3.5

Servidor SMTP Postfix configurado com suporte a milters habilitado.

🔏

OpenDKIM

Para assinatura DKIM das mensagens processadas pelo Papéli.

🐧

Linux (systemd)

Para a unidade de serviço systemd incluída. Debian, Ubuntu, RHEL, Arch.

Instalação Completa Passo a Passo

1

Instalar o Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
rustc --version  # rust 1.75+
2

Clonar e compilar

git clone https://codeberg.org/lumenpink/papeli
cd papeli
cargo build --release
# Binário em: target/release/papeli
3

Instalar o binário e criar diretórios

sudo cp target/release/papeli /usr/local/bin/papeli
sudo chmod +x /usr/local/bin/papeli

sudo mkdir -p /run/papeli /etc/papeli/templates
sudo chown -R postfix:postfix /run/papeli /etc/papeli
sudo chmod 770 /run/papeli
4

Configurar o Papéli

sudo cp deploy/papeli.example.toml /etc/papeli/papeli.toml
sudo nano /etc/papeli/papeli.toml
# Configure seus domínios, templates e assinaturas
💡
Veja a documentação de configuração para a referência completa do papeli.toml.
5

Criar template MJML padrão

# Crie o template em /etc/papeli/templates/default.mjml
# Exemplo mínimo disponível em: docs/TEMPLATES.md
sudo nano /etc/papeli/templates/default.mjml
6

Instalar a unidade systemd

sudo cp deploy/papeli.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now papeli
sudo systemctl status papeli
7

Configurar o Postfix

# Edite /etc/postfix/master.cf
# Adicione nas linhas de submission (587) e submissions (465):
#   -o smtpd_milters=unix:/run/papeli/papeli.sock,inet:localhost:8891

sudo postfix check
sudo postfix reload

Veja a documentação do Postfix para o exemplo completo do master.cf.

✓

Verificar a instalação

swaks --to teste@destino.com \
      --from voce@suaempresa.com \
      --server localhost --port 587 \
      --auth LOGIN \
      --auth-user voce@suaempresa.com \
      --auth-password 'suasenha' \
      --tls \
      --body "Teste do Papéli!"
🌸
Confira os logs: journalctl -u papeli -f e tail -f /var/log/mail.log.
O email deve chegar ao destino envelopado no papel de carta e com DKIM válido!
🌸 🌷 💐 🌷 🌸

Unidade systemd (papeli.service)

A unidade systemd incluída em deploy/papeli.service configura o Papéli com boas práticas de segurança:

[Unit]
Description=Papeli — Postfix Milter (Rust)
After=network.target

[Service]
Type=simple
User=postfix
Group=postfix
ExecStart=/usr/local/bin/papeli --config /etc/papeli/papeli.toml
Restart=on-failure
RestartSec=5s

# Segurança
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ReadWritePaths=/run/papeli /etc/papeli

[Install]
WantedBy=multi-user.target

Comandos úteis

AçãoComando
Verificar statussystemctl status papeli
Ver logs ao vivojournalctl -u papeli -f
Recarregar configsystemctl reload papeli ou kill -HUP
Reiniciarsystemctl restart papeli
Pararsystemctl stop papeli
📦

Código Fonte

O Papéli é software livre sob licença MIT. Código completo, testes e documentação disponíveis no Codeberg.