{"id":674,"date":"2026-09-06T12:54:32","date_gmt":"2026-09-06T15:54:32","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2026\/09\/go-imapsync\/"},"modified":"2026-09-29T09:02:30","modified_gmt":"2026-09-29T12:02:30","slug":"go-imapsync","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/go-imapsync\/","title":{"rendered":"go-imapsync: migraci\u00f3n de buzones IMAP con un \u00fanico binario en Go"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro conectando o duto que migra as mensagens do servidor antigo para o novo, com o gopher do Go ao lado\" src=\"\/wp-content\/uploads\/2026\/09\/go-imapsync-v2.webp\" width=\"1486\" height=\"856\" \/><\/p>\n<p>Migrar e-mail n\u00e3o \u00e9 s\u00f3 copiar a INBOX: \u00e9 levar pastas, anexos e datas sem apagar a origem, conferir o resultado e buscar as mensagens que chegaram durante a mudan\u00e7a. O <strong><a href=\"https:\/\/github.com\/jniltinho\/go-imapsync\">go-imapsync<\/a><\/strong> \u00e9 uma ferramenta em Go para copiar caixas IMAP em uma dire\u00e7\u00e3o, de <code>host1<\/code> para <code>host2<\/code>, com distribui\u00e7\u00e3o em bin\u00e1rio \u00fanico e detec\u00e7\u00e3o de mensagens j\u00e1 copiadas por cabe\u00e7alhos.<\/p>\n<p>O projeto se inspira no comportamento do <a href=\"https:\/\/imapsync.lamiral.info\/\">imapsync de Gilles Lamiral<\/a>, mas tem um escopo menor: <strong>n\u00e3o \u00e9 um substituto com todas as op\u00e7\u00f5es do imapsync original<\/strong>. Este guia usa a vers\u00e3o <strong>0.1.3<\/strong> e apresenta uma sequ\u00eancia pr\u00e1tica para testar, copiar e validar uma conta antes de migrar as demais.<\/p>\n<p><!-- more --><\/p>\n<h2>Como a c\u00f3pia funciona<\/h2>\n<p>O programa roda em uma m\u00e1quina que consegue alcan\u00e7ar os dois servidores. Ele abre uma conex\u00e3o IMAP com cada conta, lista as pastas, consulta os cabe\u00e7alhos existentes e transfere as mensagens ainda n\u00e3o reconhecidas no destino. N\u00e3o precisa ser instalado dentro do servidor de e-mail e n\u00e3o usa SMTP para transportar as mensagens.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/go-imapsync-fluxo-migracao-imap.webp\" alt=\"Fluxo do go-imapsync: origem IMAP, m\u00e1quina de migra\u00e7\u00e3o e destino IMAP, com conex\u00f5es TLS, compara\u00e7\u00e3o de cabe\u00e7alhos e sequ\u00eancia de simula\u00e7\u00e3o e c\u00f3pia\" width=\"1200\" height=\"700\" \/><\/p>\n<p>O fluxo \u00e9 <strong>unidirecional<\/strong>. A origem n\u00e3o \u00e9 apagada; o destino recebe pastas e mensagens. A ferramenta n\u00e3o cria usu\u00e1rios, n\u00e3o altera registros MX e n\u00e3o migra contatos, calend\u00e1rios, aliases ou regras de filtragem do servidor. Essas tarefas fazem parte do plano de migra\u00e7\u00e3o, mas n\u00e3o da c\u00f3pia IMAP.<\/p>\n<p>Na inser\u00e7\u00e3o de uma mensagem, s\u00e3o enviados seu conte\u00fado, a data interna do IMAP e as flags suportadas pela implementa\u00e7\u00e3o e pelo destino. Isso n\u00e3o significa manter duas caixas continuamente id\u00eanticas: mensagens reconhecidas como j\u00e1 existentes s\u00e3o puladas, inclusive sem uma etapa de atualiza\u00e7\u00e3o das flags que tenham mudado depois.<\/p>\n<h2>Antes de come\u00e7ar<\/h2>\n<ul>\n<li><strong>Autoriza\u00e7\u00e3o e contas:<\/strong> use somente caixas que voc\u00ea administra ou tem autoriza\u00e7\u00e3o para migrar. A conta de destino precisa existir.<\/li>\n<li><strong>Quota:<\/strong> confira o espa\u00e7o dispon\u00edvel no destino, incluindo Enviados, anexos e crescimento durante a migra\u00e7\u00e3o.<\/li>\n<li><strong>Autentica\u00e7\u00e3o:<\/strong> confirme que o provedor permite o m\u00e9todo de login utilizado. A vers\u00e3o 0.1.3 n\u00e3o implementa XOAUTH2; n\u00e3o presuma compatibilidade com um servi\u00e7o que exige OAuth.<\/li>\n<li><strong>Conectividade:<\/strong> a m\u00e1quina de migra\u00e7\u00e3o precisa alcan\u00e7ar os endpoints IMAP, normalmente pela porta TCP 993 com TLS desde a conex\u00e3o.<\/li>\n<li><strong>Piloto:<\/strong> comece por uma conta pequena e representativa, com subpastas, mensagens lidas\/n\u00e3o lidas e anexos.<\/li>\n<li><strong>Preserva\u00e7\u00e3o:<\/strong> mantenha uma c\u00f3pia de seguran\u00e7a e acesso ao servidor antigo at\u00e9 a aceita\u00e7\u00e3o da migra\u00e7\u00e3o.<\/li>\n<\/ul>\n<p>Se o destino faz parte de uma instala\u00e7\u00e3o pr\u00f3pria, a cria\u00e7\u00e3o de contas e quotas pode ser administrada separadamente pelo <a href=\"\/2026\/09\/go-postfixadmin\/\">go-postfixadmin<\/a>. Copiar uma caixa n\u00e3o provisiona a infraestrutura que vai receb\u00ea-la.<\/p>\n<h2>Instala\u00e7\u00e3o no Linux<\/h2>\n<p>O exemplo abaixo \u00e9 para <strong>Linux x86_64<\/strong>. A <a href=\"https:\/\/github.com\/jniltinho\/go-imapsync\/releases\/tag\/v0.1.3\">release 0.1.3<\/a> tamb\u00e9m oferece arquivos para macOS ARM64 e Windows AMD64. N\u00e3o execute o pacote de outra arquitetura.<\/p>\n<pre><code class=\"language-bash\">uname -m\nmkdir -p \"$HOME\/Downloads\/go-imapsync-0.1.3\"\ncd \"$HOME\/Downloads\/go-imapsync-0.1.3\"\n\ncurl -fL --retry 3 \\\n  -o go-imapsync_0.1.3_linux_amd64.tar.gz \\\n  https:\/\/github.com\/jniltinho\/go-imapsync\/releases\/download\/v0.1.3\/go-imapsync_0.1.3_linux_amd64.tar.gz\n\ntar -tzf go-imapsync_0.1.3_linux_amd64.tar.gz\ntar -xzf go-imapsync_0.1.3_linux_amd64.tar.gz\nsudo install -m 0755 go-imapsync \/usr\/local\/bin\/go-imapsync\n\ngo-imapsync version\ngo-imapsync --help<\/code><\/pre>\n<p>O bin\u00e1rio pronto n\u00e3o exige a instala\u00e7\u00e3o do Go para executar. Baixe apenas do reposit\u00f3rio oficial e use o mecanismo de verifica\u00e7\u00e3o disponibilizado na release, quando houver; calcular um hash local sem uma refer\u00eancia confi\u00e1vel n\u00e3o autentica o arquivo.<\/p>\n<p>Para compilar a mesma vers\u00e3o, o <code>go.mod<\/code> declara Go 1.26.0. Com uma ferramenta Go compat\u00edvel, Git e Make instalados:<\/p>\n<pre><code class=\"language-bash\">git clone --branch v0.1.3 --depth 1 https:\/\/github.com\/jniltinho\/go-imapsync.git\ncd go-imapsync\nmake build\nmake test\n.\/dist\/go-imapsync version<\/code><\/pre>\n<p><code>make build<\/code> produz <code>dist\/go-imapsync<\/code>; <code>make test<\/code> executa os testes com detector de condi\u00e7\u00f5es de corrida. O <a href=\"https:\/\/github.com\/jniltinho\/go-imapsync\/blob\/v0.1.3\/Makefile\">Makefile da vers\u00e3o<\/a> \u00e9 a refer\u00eancia para os alvos de compila\u00e7\u00e3o.<\/p>\n<h2>Preparar credenciais sem coloc\u00e1-las no hist\u00f3rico<\/h2>\n<p>Os pr\u00f3ximos exemplos usam <strong>Bash<\/strong>. Informe as senhas interativamente: elas n\u00e3o ficam escritas no comando nem s\u00e3o exibidas durante a digita\u00e7\u00e3o. Execute tudo na mesma sess\u00e3o do shell.<\/p>\n<pre><code class=\"language-bash\">umask 077\nmkdir -p \"$HOME\/go-imapsync-logs\"\n\nread -rsp 'Senha da origem: ' GOIMAPSYNC_PASSWORD1; printf '\\n'\nread -rsp 'Senha do destino: ' GOIMAPSYNC_PASSWORD2; printf '\\n'\nexport GOIMAPSYNC_PASSWORD1 GOIMAPSYNC_PASSWORD2\n\n# Substitua servidores e usu\u00e1rios pelos valores reais.\nIMAP_ARGS=(\n  --host1 imap.origem.example --user1 alice@origem.example\n  --host2 imap.destino.example --user2 alice@destino.example\n)<\/code><\/pre>\n<p>Vari\u00e1veis de ambiente evitam a senha nos argumentos do programa, mas <strong>n\u00e3o s\u00e3o um cofre<\/strong>: processos e operadores com permiss\u00f5es suficientes podem acess\u00e1-las. N\u00e3o use <code>set -x<\/code>, n\u00e3o imprima o ambiente e n\u00e3o envie logs sem revis\u00e3o. O programa procura ocultar senhas nos pr\u00f3prios logs; isso n\u00e3o protege o hist\u00f3rico do shell, ferramentas externas ou uma captura de tela.<\/p>\n<h2>Quatro etapas: simular, criar pastas, planejar e copiar<\/h2>\n<p>Execute uma etapa por vez e confira o resultado antes da seguinte. A primeira n\u00e3o cria pastas nem insere mensagens:<\/p>\n<pre><code class=\"language-bash\">go-imapsync \"${IMAP_ARGS[@]}\" --justfolders --dry<\/code><\/pre>\n<p>Verifique a \u00e1rvore de pastas. Se os nomes ou a hierarquia estiverem incorretos, pare: n\u00e3o tente compensar criando dados no lugar errado. Depois crie apenas a estrutura no destino:<\/p>\n<pre><code class=\"language-bash\">go-imapsync \"${IMAP_ARGS[@]}\" --justfolders<\/code><\/pre>\n<p>Agora simule a c\u00f3pia das mensagens. O programa conecta aos servidores e consulta cabe\u00e7alhos, mas n\u00e3o executa <code>CREATE<\/code> ou <code>APPEND<\/code> no destino:<\/p>\n<pre><code class=\"language-bash\">go-imapsync \"${IMAP_ARGS[@]}\" --dry \\\n  --logfile \"$HOME\/go-imapsync-logs\/plano.log\"<\/code><\/pre>\n<p>Sem erros de autentica\u00e7\u00e3o, pastas ou conectividade, inicie a c\u00f3pia real e capture imediatamente o c\u00f3digo de sa\u00edda:<\/p>\n<pre><code class=\"language-bash\">go-imapsync \"${IMAP_ARGS[@]}\" \\\n  --logfile \"$HOME\/go-imapsync-logs\/copia.log\"\nrc=$?\nprintf 'C\u00f3digo de sa\u00edda: %s\\n' \"$rc\"<\/code><\/pre>\n<p>A CLI distingue sucesso (<code>0<\/code>), falha de execu\u00e7\u00e3o (<code>1<\/code>) e erro de uso\/configura\u00e7\u00e3o (<code>2<\/code>). Leia tamb\u00e9m o resumo de mensagens transferidas, puladas e falhas. Em uma simula\u00e7\u00e3o, a contagem de transfer\u00eancia representa o que seria feito, n\u00e3o mensagens realmente gravadas.<\/p>\n<h2>IMAPS e STARTTLS: n\u00e3o confunda as op\u00e7\u00f5es<\/h2>\n<p>O padr\u00e3o \u00e9 <strong>IMAPS com TLS desde o in\u00edcio<\/strong>, na porta 993. Quando um servidor exige STARTTLS na porta 143, desative o modo IMAPS e habilite explicitamente a negocia\u00e7\u00e3o TLS para aquele lado. Exemplo com os dois servidores em STARTTLS:<\/p>\n<pre><code class=\"language-bash\"># Acrescente estas op\u00e7\u00f5es antes das etapas de migra\u00e7\u00e3o,\n# somente se ambos os servidores exigirem STARTTLS:\nIMAP_ARGS+=(--nossl1 --tls1 --port1 143 --nossl2 --tls2 --port2 143)\ngo-imapsync \"${IMAP_ARGS[@]}\" --justfolders --dry<\/code><\/pre>\n<p>Se s\u00f3 a origem usa STARTTLS, aplique apenas as op\u00e7\u00f5es terminadas em <code>1<\/code>; mantenha o destino no padr\u00e3o IMAPS. Use o nome de host correspondente ao certificado. Erro de certificado exige revisar hostname, validade e cadeia de confian\u00e7a, n\u00e3o adicionar <code>--insecuretls<\/code> em produ\u00e7\u00e3o.<\/p>\n<p>A <a href=\"https:\/\/github.com\/jniltinho\/go-imapsync\/blob\/v0.1.3\/docs\/GOOD_PRACTICES.md\">documenta\u00e7\u00e3o de boas pr\u00e1ticas<\/a> detalha TLS, capacidade do destino, retomada e cuidados com credenciais.<\/p>\n<h2>Incremental n\u00e3o significa \u201cimposs\u00edvel duplicar\u201d<\/h2>\n<p>A compara\u00e7\u00e3o ocorre por pasta e usa, por padr\u00e3o, os cabe\u00e7alhos <code>Message-Id<\/code> e <code>Received<\/code>, n\u00e3o o UID IMAP. Se a chave calculada j\u00e1 existe no destino, a mensagem \u00e9 pulada. Essa decis\u00e3o permite repetir a execu\u00e7\u00e3o para buscar o que chegou depois, mas n\u00e3o compara o conte\u00fado completo byte a byte.<\/p>\n<ul>\n<li>Se nenhum dos cabe\u00e7alhos selecionados fornecer uma identidade, a mensagem pode voltar a ser transferida em outra execu\u00e7\u00e3o.<\/li>\n<li>Se os cabe\u00e7alhos usados na identidade forem modificados entre servidores, a compara\u00e7\u00e3o pode n\u00e3o reconhecer a c\u00f3pia anterior.<\/li>\n<li>Mensagens diferentes com a mesma identidade podem ser consideradas iguais; reduzir a compara\u00e7\u00e3o a menos campos exige avaliar esse risco.<\/li>\n<li>Mudar <code>--useheader<\/code> entre rodadas altera o crit\u00e9rio de identifica\u00e7\u00e3o. Fa\u00e7a testes em uma conta piloto, n\u00e3o por tentativa e erro em todas as caixas.<\/li>\n<\/ul>\n<p>O detalhe est\u00e1 no <a href=\"https:\/\/github.com\/jniltinho\/go-imapsync\/blob\/v0.1.3\/internal\/identity\/identity.go\">c\u00e1lculo da identidade<\/a> e no <a href=\"https:\/\/github.com\/jniltinho\/go-imapsync\/blob\/v0.1.3\/internal\/sync\/sync.go\">fluxo de sincroniza\u00e7\u00e3o<\/a>. Por isso, \u201cpular mensagens reconhecidas\u201d \u00e9 uma descri\u00e7\u00e3o mais precisa do que garantir aus\u00eancia absoluta de duplicados.<\/p>\n<h2>Como conferir e concluir a migra\u00e7\u00e3o<\/h2>\n<p>Depois da c\u00f3pia, execute outra simula\u00e7\u00e3o com os mesmos par\u00e2metros:<\/p>\n<pre><code class=\"language-bash\">go-imapsync \"${IMAP_ARGS[@]}\" --dry \\\n  --logfile \"$HOME\/go-imapsync-logs\/verificacao.log\"<\/code><\/pre>\n<p>Em uma caixa sem novas entregas e com identidades est\u00e1veis, espera-se que n\u00e3o haja mensagens pendentes. Isso \u00e9 uma confer\u00eancia operacional, <strong>n\u00e3o uma valida\u00e7\u00e3o criptogr\u00e1fica integral<\/strong>. Abra o webmail do destino e confira amostras em INBOX, Enviados e subpastas: corpo, anexos, datas e estado de leitura. Compare contagens por pasta investigando diferen\u00e7as, em vez de assumir que totais iguais provam uma migra\u00e7\u00e3o correta.<\/p>\n<p>Planeje a mudan\u00e7a dos clientes e da entrega de e-mail separadamente. Uma estrat\u00e9gia operacional \u00e9 fazer a c\u00f3pia inicial, coordenar a virada e repetir a sincroniza\u00e7\u00e3o para capturar mensagens ainda recebidas no servidor antigo. Evite manter usu\u00e1rios alterando livremente as duas caixas: a ferramenta n\u00e3o reconcilia mudan\u00e7as em duas dire\u00e7\u00f5es.<\/p>\n<p>Mantenha a origem dispon\u00edvel at\u00e9 validar o uso real. Se precisar voltar depois de receber mensagens no destino, essas mensagens novas tamb\u00e9m precisam de um plano de recupera\u00e7\u00e3o; apenas repontar os clientes pode ocultar parte do hist\u00f3rico. Ao terminar, remova as senhas da sess\u00e3o:<\/p>\n<pre><code class=\"language-bash\">unset GOIMAPSYNC_PASSWORD1 GOIMAPSYNC_PASSWORD2\nunset IMAP_ARGS<\/code><\/pre>\n<h2>Erros comuns e o que verificar<\/h2>\n<table>\n<thead>\n<tr>\n<th>Sintoma<\/th>\n<th>A\u00e7\u00e3o<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>OVERQUOTA<\/code> no destino<\/td>\n<td>Aumente a quota ou libere espa\u00e7o com autoriza\u00e7\u00e3o. Depois repita a c\u00f3pia e confira o resumo; n\u00e3o apague a origem para contornar o erro.<\/td>\n<\/tr>\n<tr>\n<td>Conex\u00e3o encerrada ou timeout<\/td>\n<td>Confira rede, limites do servidor e logs. Resolva a causa antes de repetir; aumentar <code>--timeout<\/code> n\u00e3o corrige credenciais ou quota.<\/td>\n<\/tr>\n<tr>\n<td>Falha no login<\/td>\n<td>Confira usu\u00e1rio completo, senha e pol\u00edtica do provedor. Acesso pelo webmail n\u00e3o prova que login IMAP por senha esteja habilitado.<\/td>\n<\/tr>\n<tr>\n<td>Certificado inv\u00e1lido<\/td>\n<td>Corrija o endpoint ou a confian\u00e7a da CA. N\u00e3o desative a verifica\u00e7\u00e3o TLS como solu\u00e7\u00e3o permanente.<\/td>\n<\/tr>\n<tr>\n<td>Mensagens reaparecem a cada rodada<\/td>\n<td>Investigue os cabe\u00e7alhos de identidade e poss\u00edveis transforma\u00e7\u00f5es no destino antes de mudar <code>--useheader<\/code>.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>A ferramenta pode ser executada novamente depois de corrigir a falha. O que j\u00e1 foi copiado ser\u00e1 reconhecido conforme o mesmo crit\u00e9rio de cabe\u00e7alhos; isso n\u00e3o elimina as limita\u00e7\u00f5es descritas acima.<\/p>\n<h2>Executar com Docker<\/h2>\n<p>O reposit\u00f3rio inclui um Dockerfile. Na \u00e1rvore da vers\u00e3o escolhida, compile a imagem e confirme que ela executa. Para o teste de conex\u00e3o, prepare novamente as vari\u00e1veis de senha se j\u00e1 tiver usado <code>unset<\/code>:<\/p>\n<pre><code class=\"language-bash\">make docker-build\ndocker run --rm go-imapsync:dev version\n\ndocker run --rm \\\n  -e GOIMAPSYNC_PASSWORD1 \\\n  -e GOIMAPSYNC_PASSWORD2 \\\n  go-imapsync:dev \\\n  --host1 imap.origem.example --user1 alice@origem.example \\\n  --host2 imap.destino.example --user2 alice@destino.example \\\n  --justfolders --dry<\/code><\/pre>\n<p>N\u00e3o \u00e9 necess\u00e1rio usar cont\u00eainer privilegiado. As senhas s\u00e3o fornecidas na execu\u00e7\u00e3o, n\u00e3o no Dockerfile, mas usu\u00e1rios com acesso administrativo ao Docker podem inspecionar o ambiente do cont\u00eainer. Restrinja esse acesso e n\u00e3o persista credenciais em imagens.<\/p>\n<h2>Limites da vers\u00e3o e pr\u00f3ximos passos<\/h2>\n<p>A vers\u00e3o 0.1.3 \u00e9 um MVP focado em c\u00f3pia IMAP. Filtros e mapeamento configur\u00e1vel de pastas, exclus\u00f5es com <code>--delete1\/--delete2<\/code>, XOAUTH2, tratamento espec\u00edfico de labels do Gmail e migra\u00e7\u00e3o em massa por CSV aparecem como trabalho futuro no reposit\u00f3rio, n\u00e3o como recursos entregues nem como promessa de prazo.<\/p>\n<p>O c\u00f3digo usa licen\u00e7a <a href=\"https:\/\/github.com\/jniltinho\/go-imapsync\/blob\/v0.1.3\/LICENSE\">MIT<\/a>. Nesta revis\u00e3o, o bin\u00e1rio da release teve vers\u00e3o e ajuda conferidas e a su\u00edte da tag 0.1.3 passou com <code>go test -race .\/...<\/code>, usando os testes locais do projeto. Isso n\u00e3o substitui um ensaio contra os servidores reais da sua migra\u00e7\u00e3o.<\/p>\n<p>O ganho \u00e9 simplificar a execu\u00e7\u00e3o da c\u00f3pia; o cuidado continua sendo operacional: piloto, quota, TLS, logs e valida\u00e7\u00e3o. Para arquivos e armazenamento em nuvem, o problema \u00e9 diferente \u2014 veja o guia de <a href=\"\/2026\/09\/rclone-no-linux-sync-backup-criptografado-mount-e-serve-em-qualquer-nuvem\/\">rclone no Linux<\/a>. Para e-mail, mantenha o procedimento focado nas caixas IMAP e s\u00f3 encerre o servidor antigo depois de conferir os dados.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Migra buzones IMAP con go-imapsync: instalaci\u00f3n, credenciales protegidas, TLS, simulaci\u00f3n, copia incremental y validaci\u00f3n, con los l\u00edmites de la versi\u00f3n 0.1.3.<\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[78,111,120],"tags":[79,31,242,330,331],"class_list":["post-674","post","type-post","status-publish","format-standard","hentry","category-email","category-opensource","category-servidores","tag-email","tag-golang","tag-imap","tag-imapsync","tag-migracao"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/comments?post=674"}],"version-history":[{"count":4,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/674\/revisions"}],"predecessor-version":[{"id":1772,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/674\/revisions\/1772"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/media?parent=674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/categories?post=674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/tags?post=674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}