Para definir uma lista de itens para atribuir a muitas opções diferentes no postfix, você pode usar uma lista separada por vírgulas como esta:
relay_domains = example.com,example.net,example.org
ou um mapa hash como este:
relay_domains = hash:/etc/postfix/relay_domains
e então use o postmap para converter esse arquivo de itens de chave e valor em um arquivo bdb.
Minha pergunta é: existe algum motivo de desempenho para usar o mapa hash em vez de apenas especificar a lista?
Responder1
Não tenho dados ou métricas para decidir se o desempenho é importante em ambos os casos. Tentarei explicar qual é o processo de fundo envolvendo esses dois casos.
Quando o daemon postfix estava em execução, há pouca diferença entre os dois porque:
- Ao usar
main.cf
, o postfix analisa o arquivo de configuração, salva-o na memória e não verifica o arquivo novamente até que o postfix seja reiniciado ou o administrador emitapostfix reload
o comando. - Ao usar a tabela hash, o postfix analisa a tabela, salva-a na memória E verifica periodicamente se o arquivo foi alterado. Se o banco de dados foi alterado, o postfix será encerrado antes de tratar a próxima solicitação do cliente, para que um novo processo possa inicializar com o novo banco de dados.fonte
Agora, se você quiser alterar a lista, então
- Depois de alterar
main.cf
, você deve invocarpostfix reload
. Isso forçará o daemon mestre a reler o arquivo de configuração e encerrar o processo filho para que ele possa obter uma nova configuração.fonte - Depois de alterar a tabela hash, não há necessidade de invocar
postfix reload
.
Ainda não entendo a diferença entre (1) reiniciar o processo filho por invocações manuais postfix reload
e (2) reiniciar o processo filho acionado pela tabela hash foi modificado.
Aqui está algum conhecimento depois de ler opágina de manuais do postfix, especialmente emProcesso de Daemonsseção. Isso me ajuda a entender a diferença entre (1) reiniciar o processo filho por meio de invocações manuais postfix reload
e (2) reiniciar o processo filho acionado pela tabela hash foi modificado.
Postfix tem o processo mestre chamadomestre. Ele é invocado pela primeira vez e serve como programa 'mestre'. Ele invocou outro daemon como smtpd, qmgr, trivial-rewrite sob demanda.
Existem quatro tipos de daemons postfix
- O daemon que não morrerá, portanto não captará automaticamente as alterações em main.cf. Invocar
postfix reload
após uma alteração na configuração fará com que o processo a leia novamente. Isso inclui:mestre. - O daemon que se tornou um processo persistente, portanto não captará automaticamente as alterações em main.cf. Invocar
postfix reload
após uma alteração na configuração fará com que o processo a leia novamente. Isso inclui:qmgr,tlsmgr,verificar. - O processo de longa execução que pode durar entre uma hora ou várias horas. Invocar
postfix reload
após uma alteração de configuração acelerará a alteração da configuração. Isso inclui:reescrita trivial,escolher,pós-tela,mapa proxy - O processo de execução curta que é executado por apenas um período limitado de tempo. A invocação
postfix reload
é desnecessária porque o processo relê main.cf ao ser executado novamente. Isto incluindoSMTP,smtpd,locale outros processos além das três categorias acima.
Se você estiver usando main.cf
para armazenar as listas, mas não invocar postfix reload
, então
- Daemons de categoria 4 irão buscá-lo imediatamente após o renascimento do processo devido à sua curta idade.
- Daemons categoria 3 precisam de algum tempo para obter o efeito
- Os daemons das categorias 1 e 2 nunca são relês
main.cf
até que você invoquepostfix reload
:
Quando você está usando uma tabela hash para armazenar as listas e editou postmap
o arquivo, então
- Daemons da categoria 2,3,4 detectarão as alterações no arquivo. Portanto, não há necessidade de recarregar o postfix.
- A categoria 1 do daemon não possui valor de parâmetro do tipo hash. Portanto, não tem efeito no master daemon.
Conclusão
Caso contrário, parece que a diferença de desempenho entre os dois casos acima foi pequena. Se você raramente altera a tabela, a diferença pode ser negligenciada. A exceção é se você fizer postfix reload
ou alterar frequentemente a tabela hash, isso será uma preocupação de desempenho no qmgr
processo. Veraquieaqui
Mais informações:Leiame de desempenho do Postfix