hMailServer

Los proyectos que siguen las mejores prácticas a continuación pueden autocertificarse voluntariamente y demostrar que han obtenido una insignia de mejores prácticas de Open Source Security Foundation (OpenSSF).

No existe un conjunto de prácticas que pueda garantizar que el software nunca tendrá defectos o vulnerabilidades; incluso los métodos formales pueden fallar si las especificaciones o suposiciones son incorrectas. Tampoco existe ningún conjunto de prácticas que pueda garantizar que un proyecto mantenga una comunidad de desarrollo saludable y que funcione bien. Sin embargo, seguir las mejores prácticas puede ayudar a mejorar los resultados de los proyectos. Por ejemplo, algunas prácticas permiten la revisión por parte de múltiples personas antes del lanzamiento, lo que puede ayudar a encontrar vulnerabilidades técnicas que de otro modo serían difíciles de encontrar y ayudar a generar confianza y un deseo repetido de interacción entre desarrolladores de diferentes compañías. Para obtener una insignia, se deben cumplir todos los criterios DEBE y NO DEBE, se deben cumplir, así como todos los criterios DEBERÍAN deben cumplirse o ser justificados, y todos los criterios SUGERIDOS se pueden cumplir o incumplir (queremos que se consideren al menos). Si desea añadir texto como justificación mediante un comentario genérico, en lugar de ser un razonamiento de que la situación es aceptable, comience el bloque de texto con '//' seguido de un espacio. Los comentarios son bienvenidos a través del sitio de GitHub mediante "issues" o "pull requests". También hay una lista de correo electrónico para el tema principal.

Con mucho gusto proporcionaríamos la información en varios idiomas, sin embargo, si hay algún conflicto o inconsistencia entre las traducciones, la versión en inglés es la versión autorizada.
Si este es su proyecto, por favor muestre el estado de su insignia base en la página de su proyecto. El estado de la insignia base se ve así: El nivel de insignia base para el proyecto 14949 es in_progress Aquí se explica cómo insertar la insignia base:
Puede mostrar el estado de su insignia base insertando esto en su archivo markdown:
[![OpenSSF Baseline](https://www.bestpractices.dev/projects/14949/baseline)](https://www.bestpractices.dev/projects/14949)
o insertando esto en su HTML:
<a href="https://www.bestpractices.dev/projects/14949"><img src="https://www.bestpractices.dev/projects/14949/baseline"></a>


Estos son los criterios de Nivel Base 2. Estos son los criterios de la versión v2026.08.28.

Baseline Series: Nivel Base 1 Nivel Base 2 Nivel Base 3

        

 Fundamentos

  • General

    Tenga en cuenta que otros proyectos pueden usar el mismo nombre.

    hMailServer is a free, open-source mail server for Windows and Linux, implementing SMTP, IMAP and POP3, with webmail, a REST API and a Control Panel. It is a maintained fork of Martin Knafve's hMailServer, brought up to date with a current toolchain, current cryptography, and the transport-security and authentication standards expected of a mail server in 2026.

    Por favor use formato de expresión de licencia SPDX; los ejemplos incluyen "Apache-2.0", "BSD-2-Clause", "BSD-3-Clause", "GPL-2.0+", "LGPL-3.0+", "MIT" y "(BSD-2-Clause OR Ruby)". No incluya comillas simples o comillas dobles.
    Si hay más de un lenguaje, enumérelos como valores separados por comas (los espacios son opcionales) y ordénelos de más a menos usado. Si hay una lista larga, por favor enumere al menos los tres primeros más comunes. Si no hay lenguaje (por ejemplo, este es un proyecto solo de documentación o solo de pruebas), use el carácter único "-". Por favor use una capitalización convencional para cada lenguaje, por ejemplo, "JavaScript".
    La Common Platform Enumeration (CPE) es un esquema de nomenclatura estructurado para sistemas de tecnología de la información, software y paquetes. Se utiliza en varios sistemas y bases de datos al reportar vulnerabilidades.

    This entry replaces https://www.bestpractices.dev/en/projects/14187, which was made through a GitHub login. GitHub suspended the project account on 18 September 2026, so that entry can no longer be edited. The project has lived on GitLab since 22 September 2026: https://gitlab.com/Progressiverobot/hmailserver. Every answer here was checked again against the project on 26 September 2026.

 Controles 16/19 ●

  • Controles


    Cuando una tarea de CI/CD se ejecuta sin permisos especificados, el sistema de CI/CD DEBE establecer por defecto los permisos de la tarea a los permisos más bajos otorgados en el pipeline. [OSPS-AC-04.01]
    Configure las configuraciones del proyecto para asignar los permisos más bajos disponibles a nuevos pipelines por defecto, otorgando permisos adicionales solo cuando sea necesario para tareas específicas.

    A GitLab CI job that declares nothing gets only its own CI_JOB_TOKEN, which works on a limited set of API endpoints. The project refuses job-token pushes to the repository, and its inbound job-token allowlist holds only the project itself. A job gets no OIDC ID token unless it declares one. The five project CI/CD variables are Azure identifiers, not secrets, and all are protected. See https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/.gitlab-ci.yml



    Cuando se crea un lanzamiento oficial, ese lanzamiento DEBE ser asignado un identificador de versión único. [OSPS-BR-02.01]
    Asigne un identificador de versión único a cada lanzamiento producido por el proyecto, siguiendo una convención de nomenclatura o esquema de numeración consistente. Los ejemplos incluyen SemVer, CalVer o ID de commit de git.

    Every release has a unique SemVer tag (v6.3.0 to v6.3.3 on GitLab, with earlier releases re-published under their original tags). Tags are annotated and SSH-signed from v6.2.23-alpha2 on, and the v* tag pattern is protected. See https://gitlab.com/Progressiverobot/hmailserver/-/releases



    Cuando se crea un lanzamiento oficial, ese lanzamiento DEBE contener un registro descriptivo de modificaciones funcionales y de seguridad. [OSPS-BR-04.01]
    Asegúrese de que todos los lanzamientos incluyan un registro de cambios descriptivo. Se recomienda asegurar que el registro de cambios sea legible por humanos e incluya detalles más allá de los mensajes de commit, como descripciones del impacto de seguridad o relevancia para diferentes casos de uso. Para asegurar la legibilidad automática, coloque el contenido bajo un encabezado markdown como "## Changelog".

    Every release on GitLab carries human-written notes on functional and security changes (6.3.3's run to about 25 KB), and CHANGELOG.md keeps the same log per version, including the 6.3.4 section. See https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/CHANGELOG.md



    Cuando un pipeline de construcción y lanzamiento ingiere dependencias, DEBE usar herramientas estandarizadas donde estén disponibles. [OSPS-BR-05.01]
    Use herramientas comunes para su ecosistema, como gestores de paquetes o herramientas de gestión de dependencias para ingerir dependencias en tiempo de construcción. Esto puede incluir usar un archivo de dependencias, archivo de bloqueo o manifiesto para especificar las dependencias requeridas, que luego son incorporadas por el sistema de construcción.

    The .NET projects use NuGet with committed lock files, restored with --locked-mode. The Linux build takes its libraries from the distribution's packages, in a CI image built from build/ci/linux.Dockerfile. OpenSSL, Boost and libpq are built from source archives at pinned versions, each checked against its SHA-256 (libraries/build-*.ps1), and every fetched binary input is pinned by hash in hmailserver/docs/third-party-binaries.json. See https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/SECURITY.md



    Cuando se crea un lanzamiento oficial, ese lanzamiento DEBE estar firmado o registrado en un manifiesto firmado que incluya los hashes criptográficos de cada activo. [OSPS-BR-06.01]
    Firme todos los activos de software lanzados en tiempo de construcción con una firma criptográfica o atestaciones, como firma GPG o PGP, firmas Sigstore, proveniencia SLSA, o VSAs SLSA. Incluya los hashes criptográficos de cada activo en un manifiesto firmado o archivo de metadatos.

    Every asset of the releases from 6.2.19 to 6.3.3 carries its own keyless Sigstore bundle, and the Windows installer is Authenticode-signed since 6.3.1. From 6.3.4 every release also carries a SHA256SUMS manifest with each asset's SHA-256, signed with the release-tag SSH key listed in the repository's allowed_signers file (ssh-keygen -Y sign; checked with ssh-keygen -Y verify). How to verify each: https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/SECURITY.md#verifying-a-release



    Cuando el proyecto ha realizado un lanzamiento, la documentación del proyecto DEBE incluir una descripción de cómo el proyecto selecciona, obtiene y rastrea sus dependencias. [OSPS-DO-06.01]
    Se recomienda publicar esta información junto con la documentación técnica y de diseño del proyecto en un recurso públicamente visible como el repositorio de código fuente, sitio web del proyecto u otro canal.

    Several documents describe how dependencies are chosen, obtained and tracked. hmailserver/docs/ThirdPartyBinaries.md records each third-party build input: what it is, where it comes from, how the build fetches and hash-checks it, and why it is needed. SECURITY.md, "Supply chain" and "Dependencies", covers the pinned native libraries, the NuGet lock files, the dependency-scan job (Trivy and OSV) and Renovate (renovate.json). CONTRIBUTING.md lists the prerequisites. See https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/hmailserver/docs/ThirdPartyBinaries.md



    La documentación del proyecto DEBE incluir instrucciones sobre cómo compilar el software, incluyendo las bibliotecas, marcos, SDK y dependencias necesarias. [OSPS-DO-07.01]
    Se recomienda publicar esta información junto con la documentación para colaboradores del proyecto, por ejemplo en CONTRIBUTING.md u otra documentación de tareas para desarrolladores. También puede documentarse utilizando objetivos de Makefile u otros scripts de automatización.

    README.md, "Building hMailServer", and CONTRIBUTING.md, "Prerequisites" and "Building", give the toolchain (Visual Studio 2026 / v145, Inno Setup, Perl, Python; clang and CMake on Linux). They say how to build OpenSSL, Boost and libpq, and how to get the hash-checked build inputs, with the build scripts under build/. See https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/CONTRIBUTING.md#building



    La documentación del proyecto DEBE incluir una lista de los miembros del proyecto que tienen acceso a recursos sensibles. [OSPS-GV-01.01]
    Documente los participantes del proyecto y sus roles a través de artefactos tales como members.md, governance.md, maintainers.md, o archivo similar dentro del repositorio de código fuente del proyecto. Esto puede ser tan simple como incluir nombres o identificadores de cuenta en una lista de mantenedores, o más complejo dependiendo de la gobernanza del proyecto.

    GOVERNANCE.md, 'Maintainers', names the project's two maintainers and their accounts: Christopher Holloway (Progressiverobot on GitLab, the Owner; chrisholloway5 on GitHub) and Zain Ul Abidin (Zainulabidin90 on GitHub; zainulabidin1990 on GitLab from the next batch). A table shows which duties each holds, and 'Critical assets' lists the credentials. GitLab's member list shows the three accounts and their roles. See https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/GOVERNANCE.md#maintainers



    La documentación del proyecto DEBE incluir descripciones de los roles y responsabilidades de los miembros del proyecto [OSPS-GV-01.02]
    Documente los participantes del proyecto y sus roles a través de artefactos tales como members.md, governance.md, maintainers.md, o archivo similar dentro del repositorio de código fuente del proyecto.

    GOVERNANCE.md describes the Maintainer, Contributor and Reporter roles and each one's responsibilities (accepting changes, releasing, security response, direction, infrastructure). It also has a table of which maintainer holds which duty today. See https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/GOVERNANCE.md#roles-and-responsibilities



    La documentación del proyecto DEBE incluir una guía para colaboradores de código que incluya los requisitos para que las contribuciones sean aceptables. [OSPS-GV-03.02]
    Extienda el CONTRIBUTING.md o los contenidos de CONTRIBUTING/ en la documentación del proyecto para delinear los requisitos para contribuciones aceptables, incluyendo estándares de codificación, requisitos de pruebas y pautas de envío para contribuidores de código. Se recomienda que esta guía sea la fuente de verdad tanto para contribuidores como para aprobadores.

    CONTRIBUTING.md sets the requirements for an acceptable contribution: one logical change, regression tests for behaviour changes, a warning-free build, parameterised SQL only, and settings in the database. It also covers the checkers to run, code style and licence headers, the change checklists (schema, COM, REST, UI), commit rules and DCO sign-off. See https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/CONTRIBUTING.md



    El sistema de control de versiones DEBE requerir que todos los colaboradores de código afirmen que están legalmente autorizados para realizar las contribuciones asociadas en cada confirmación (commit). [OSPS-LE-01.01]
    Incluya un DCO en el repositorio del proyecto, requiriendo que los contribuidores de código afirmen que están legalmente autorizados para confirmar las contribuciones asociadas en cada commit. Use una verificación de estado para asegurar que se haga la afirmación. Un CLA también satisface este requisito. Algunos sistemas de control de versiones, como GitHub, pueden incluir esto en los términos de servicio de la plataforma.

    CONTRIBUTING.md requires a DCO Signed-off-by, naming the commit's author, on every commit of a merge request from a fork. The sign-off job in .gitlab-ci.yml checks it, but no merge request has run it yet. The maintainers' own commits, which are almost all of master, are exempt and carry no sign-off, so not every commit carries the assertion. See https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/CONTRIBUTING.md#sign-off



    Cuando se realiza un commit a la rama principal, cualquier verificación de estado automatizada para commits DEBE pasar o ser omitida manualmente. [OSPS-QA-03.01]
    Configure el sistema de control de versiones del proyecto para requerir que todas las verificaciones de estado automatizadas pasen o requieran reconocimiento manual antes de que un commit pueda fusionarse en la rama principal. Se recomienda que cualquier verificación de estado opcional NO esté configurada como un requisito de pasar o fallar que los aprobadores puedan estar tentados a omitir.

    master is protected (only Maintainers push, no force-push) and GitLab's 'pipelines must succeed' setting is on for merge requests, but changes reach master by the maintainer's fast-forward push, which no status check gates: .gitlab-ci.yml defines the checks, but no full pipeline has run on GitLab yet. Every change is landed only after the maintainer's own full regression gate, the whole Windows suite split across two machines plus the whole Linux suite. https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/hmailserver/docs/ContinuousIntegration.md



    Antes de que se acepte un commit, los pipelines de CI/CD del proyecto DEBEN ejecutar al menos un conjunto de pruebas automatizado para asegurar que los cambios cumplan las expectativas. [OSPS-QA-06.01]
    Las pruebas automatizadas deben ejecutarse antes de cada fusión en la rama principal. El conjunto de pruebas debe ejecutarse en un pipeline de CI/CD y los resultados deben ser visibles para todos los contribuidores. El conjunto de pruebas debe ejecutarse en un entorno consistente y debe ejecutarse de manera que permita a los contribuidores ejecutar las pruebas localmente. Ejemplos de conjuntos de pruebas incluyen pruebas unitarias, pruebas de integración y pruebas de extremo a extremo.

    No CI/CD pipeline tests a change before it is accepted yet. .gitlab-ci.yml defines the whole Windows suite (windows-gate), the whole Linux suite (linux-suite) and the .NET tests on the project's own runners for master, batch* and v* pipelines, but no pipeline running them has run on GitLab (every push pipeline so far was skipped). Today every change is landed only after the maintainer's own full regression gate: the whole Windows suite split across two machines, plus the whole Linux suite. GitHub Actions ran the CI tests until 18 September 2026. https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/hmailserver/docs/ContinuousIntegration.md



    Cuando el proyecto ha realizado un lanzamiento, la documentación del proyecto DEBE incluir documentación de diseño que demuestre todas las acciones y actores dentro del sistema. [OSPS-SA-01.01]
    Incluya diseños en la documentación del proyecto que expliquen las acciones y los actores. Los actores incluyen cualquier subsistema o entidad que pueda influir en otro segmento del sistema. Asegúrese de que esto se actualice para nuevas características o cambios importantes.

    ARCHITECTURE.md is the design document: the server's modules (SMTP, IMAP, POP3, the delivery queue, anti-spam and anti-virus, persistence over four database backends), the COM API as the management seam, the REST, metrics, web-services and ManageSieve listeners, scheduled work, the Linux build and the tests. ASSURANCE-CASE.md adds the actors (A1-A6) and the trust boundaries between them (B1-B6). https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/ARCHITECTURE.md



    Cuando el proyecto haya realizado un lanzamiento, la documentación del proyecto DEBE incluir descripciones de todas las interfaces de software externas de los activos de software liberados. [OSPS-SA-02.01]
    Documente todas las interfaces de software (APIs) de los activos de software liberados, explicando cómo los usuarios pueden interactuar con el software y qué datos se esperan o se producen. Asegúrese de que esto se actualice para nuevas funcionalidades o cambios incompatibles.

    README.md's Capabilities and Administration sections describe every external interface: SMTP, IMAP and POP3 with their extensions, ManageSieve, CardDAV and CalDAV, the REST API (which serves its own OpenAPI document at /api/v1/openapi.json), the Control Deck and webmail, Prometheus /metrics and health probes, OTLP export, SNMP and the COM API, with a document per feature under hmailserver/docs. https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/README.md



    Cuando el proyecto haya realizado un lanzamiento, el proyecto DEBE realizar una evaluación de seguridad para comprender los problemas de seguridad potenciales más probables e impactantes que podrían ocurrir dentro del software. [OSPS-SA-03.01]
    Realizar una evaluación de seguridad informa tanto a los miembros del proyecto como a los consumidores posteriores que el proyecto comprende qué problemas podrían surgir dentro del software. Comprender qué amenazas podrían materializarse ayuda al proyecto a gestionar y abordar el riesgo. Esta información es útil para los consumidores posteriores para demostrar la competencia y prácticas de seguridad del proyecto. Asegúrese de que esto se actualice para nuevas funcionalidades o cambios incompatibles.

    ASSURANCE-CASE.md is the project's security assessment: security claims C1-C7 argued with evidence, the threat model and trust boundaries, a CWE-by-CWE argument of how common weaknesses are countered, and the residual risk, with a status note on which checks ran on GitHub and what replaces them on GitLab. https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/ASSURANCE-CASE.md



    La documentación del proyecto DEBE incluir una política de divulgación coordinada de vulnerabilidades (CVD), con un plazo claro de respuesta. [OSPS-VM-01.01]
    Cree un archivo SECURITY.md en la raíz del directorio, describiendo la política del proyecto para la divulgación coordinada de vulnerabilidades. Incluya un método para reportar vulnerabilidades. Establezca expectativas sobre cómo el proyecto responderá y abordará los problemas reportados.

    SECURITY.md is the coordinated vulnerability disclosure policy: report privately by confidential GitLab issue or Service Desk email; acknowledgement within 5 working days, initial assessment within 10, a fix within 90 days of acknowledgement, and publication when the fix ships or at 90 days, whichever comes first. https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/SECURITY.md



    La documentación del proyecto DEBE proporcionar un medio para reportar vulnerabilidades de forma privada directamente a los contactos de seguridad del proyecto. [OSPS-VM-03.01]
    Proporcione un medio para que los investigadores de seguridad reporten vulnerabilidades de forma privada al proyecto. Esto puede ser una dirección de correo electrónico dedicada, un formulario web, herramientas especializadas del VCS, direcciones de correo electrónico para contactos de seguridad, u otros métodos.

    SECURITY.md gives two private routes straight to the maintainers: a confidential GitLab issue with the Security template, visible only to the reporter and the project's members, or email to the Service Desk address contact-project+progressiverobot-hmailserver-86730559-issue-@incoming.gitlab.com, which GitLab files as a confidential issue, so no account is needed. https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/SECURITY.md#reporting-a-vulnerability



    La documentación del proyecto DEBE publicar públicamente los datos sobre las vulnerabilidades descubiertas. [OSPS-VM-04.01]
    Proporcione información sobre vulnerabilidades conocidas en un canal público predecible, como una entrada CVE, publicación de blog u otro medio. En la medida de lo posible, esta información debe incluir la(s) versión(es) afectada(s), cómo un consumidor puede determinar si es vulnerable, e instrucciones para la mitigación o remediación.

    SECURITY.md: when a fix ships, the release notes describe the vulnerability, the confidential issue is made public, and a CVE ID requested through GitLab (a CNA) is quoted. The first vulnerability found in this fork, the JScript event-script injection fixed in 6.3.4, is described in CHANGELOG.md on master with the affected versions (6.0.0 to 6.3.3), the configurations exposed and the fix. https://gitlab.com/Progressiverobot/hmailserver/-/blob/master/CHANGELOG.md



Puede utilizar herramientas y sistemas de IA para proponer cambios a través de una URL simple, como https://www.bestpractices.dev/es/projects/14949/choose/edit?osps_ac_01_01_status=Met&osps_ac_01_01_justification=GitHub+enforced. Consulte nuestro sistema de propuestas de automatización para saber cómo hacerlo. Estos datos están disponibles bajo el Acuerdo de Licencia de Datos de la Comunidad – Permisivo, Versión 2.0 (CDLA-Permissive-2.0). Esto significa que un Destinatario de Datos puede compartir los Datos, con o sin modificaciones, siempre que el Destinatario de Datos ponga a disposición el texto de este acuerdo con los Datos compartidos. Por favor, acredite a christopher holloway y a los colaboradores de la insignia de Mejores Prácticas de OpenSSF.

Entrada de insignia del proyecto propiedad de: christopher holloway.
Entrada creada el 2026-09-26 05:28:20 UTC, última actualización el 2026-09-26 06:16:51 UTC. Última obtención de la insignia de nivel básico el 2026-09-26 05:45:21 UTC.