{"id":265,"date":"2009-07-29T23:09:18","date_gmt":"2009-07-29T23:09:18","guid":{"rendered":"https:\/\/www.bishnet.net\/tim\/blog\/?p=265"},"modified":"2019-05-22T14:48:38","modified_gmt":"2019-05-22T13:48:38","slug":"implementing-srs-with-exim-and-sqlite","status":"publish","type":"post","link":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/","title":{"rendered":"Implementing SRS with Exim and SQLite"},"content":{"rendered":"<p>Due to issues with SPF-style restrictions I decided I&#8217;d take a look at implementing SRS (the Sender Rewriting Scheme) with <a href=\"http:\/\/www.exim.org\/\">Exim<\/a>. I thought it&#8217;d be fairly straightforward and well documented, but it wasn&#8217;t. I&#8217;m left wondering if anybody actually does it like this?<\/p>\n<p>To start with I built Exim on <a href=\"http:\/\/www.freebsd.org\/\">FreeBSD<\/a> with the SPF and SRS libraries (I used <a href=\"http:\/\/srs.mirtol.com\/\">libsrs_alt<\/a>). This was straightforward enough &#8211; although where are the options in the FreeBSD port? &#8211; and would be standard across most operating systems.<\/p>\n<p>Since this was a trial run I thought I&#8217;d take the lightweight approach and use <a href=\"http:\/\/www.sqlite.org\/\">SQLite<\/a> rather than set up a full database like MySQL. This again was a straightforward install.<\/p>\n<p>Lets look quickly and the SQLite tables. The <a href=\"http:\/\/srs.mirtol.com\/exim.php\">instructions on the libsrs_alt site<\/a> don&#8217;t talk about creating these, so I just figured it out for myself. This is what I ended up with:<\/p>\n<pre># sqlite3 \/var\/tmp\/srs.db .dump\nBEGIN TRANSACTION;\nCREATE TABLE SRS(Key TEXT, Address TEXT, Time INTEGER);\nCOMMIT;\n#<\/pre>\n<p>That&#8217;s pretty simple. The database should probably live somewhere a bit more permanent though :-).<\/p>\n<p>Right, back to the instructions. Basically we need to add a bit of config and a new router to the exim configuration. Starting with the default configuration I added the following option in the global section:<\/p>\n<pre>hide srs_secrets = asecurestringofareasonablelength<\/pre>\n<p>And then the following routers:<\/p>\n<pre>srs_reverse:\n  driver = redirect\n  domains = +local_domains\n  srs = reverseandforward\n  srs_dbinsert = ${lookup sqlite{\/var\/tmp\/srs.db \\\n    INSERT INTO SRS ('Key', 'Address', 'Time') \\\n    VALUES ('${srs_db_key}', '${srs_db_address}', \\\n    strftime('%s','now'))}}\n  srs_dbselect = ${lookup sqlite{\/var\/tmp\/srs.db \\\n    SELECT Address FROM SRS \\\n    WHERE Key = '${srs_db_key}' \\\n    AND Time &gt; strftime('%s','now','-30 days') \\\n    LIMIT 1}}\n  data = ${srs_recipient}<\/pre>\n<pre>srs_forward:\n  driver = redirect\n  domains = +local_domains\n  srs = forward\n  srs_dbinsert = ${lookup sqlite{\/var\/tmp\/srs.db \\\n    INSERT INTO 'SRS' ('Key', 'Address', 'Time') \\\n    VALUES ('${srs_db_key}', '${srs_db_address}', \\\n    strftime('%s','now'))}}\n  data = $local_part@example.org<\/pre>\n<p>As you can see in this case, I&#8217;m simply forwarding all email to another domain. That&#8217;s not the most useful setup, but again I&#8217;m just testing.<\/p>\n<p>Note that I had to put these in the opposite order to <a href=\"http:\/\/srs.mirtol.com\/exim.php\">the instructions<\/a>. The first router is looking for addresses that are already SRS encoded (so bounces for forwarded messages, etc). If it doesn&#8217;t find one, it just passes on to the next one. So this way round work best for me.<\/p>\n<p>That&#8217;s it really. At a simple level this works. I&#8217;ve not looking at proper integration in to the forwarding setup or any kind of database maintenance yet. But given the lack of useful documentation online I thought I&#8217;d post my findings.<\/p>\n<p>If you&#8217;re reading this and thinking &#8220;why on earth is he doing it like that?&#8221; please drop me a comment below and enlighten me :-).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this post I look at implemeting SRS using Exim and SQLite.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,2],"tags":[112,110,113,111,109],"class_list":["post-265","post","type-post","status-publish","format-standard","hentry","category-computing","category-work","tag-exim","tag-sender-rewriting-scheme","tag-spf","tag-sqlite","tag-srs"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"In this post I look at implemeting SRS using Exim and SQLite.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Tim Bishop\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_GB\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Tim Bishop |\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Implementing SRS with Exim and SQLite | Tim Bishop\" \/>\n\t\t<meta property=\"og:description\" content=\"In this post I look at implemeting SRS using Exim and SQLite.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2009-07-29T23:09:18+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-05-22T13:48:38+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Implementing SRS with Exim and SQLite | Tim Bishop\" \/>\n\t\t<meta name=\"twitter:description\" content=\"In this post I look at implemeting SRS using Exim and SQLite.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/2009\\\/07\\\/29\\\/implementing-srs-with-exim-and-sqlite\\\/#article\",\"name\":\"Implementing SRS with Exim and SQLite | Tim Bishop\",\"headline\":\"Implementing SRS with Exim and SQLite\",\"author\":{\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/2009\\\/07\\\/29\\\/implementing-srs-with-exim-and-sqlite\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e954b8a434eb09bf9aeb19e62dee801380a15d8eb88101a8ac5d5d6b52184a10?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Tim Bishop\"},\"datePublished\":\"2009-07-29T23:09:18+01:00\",\"dateModified\":\"2019-05-22T14:48:38+01:00\",\"inLanguage\":\"en-GB\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/2009\\\/07\\\/29\\\/implementing-srs-with-exim-and-sqlite\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/2009\\\/07\\\/29\\\/implementing-srs-with-exim-and-sqlite\\\/#webpage\"},\"articleSection\":\"Computing, Work, Exim, Sender Rewriting Scheme, SPF, SQLite, SRS\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/2009\\\/07\\\/29\\\/implementing-srs-with-exim-and-sqlite\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/category\\\/work\\\/#listItem\",\"name\":\"Work\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/category\\\/work\\\/#listItem\",\"position\":2,\"name\":\"Work\",\"item\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/category\\\/work\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/2009\\\/07\\\/29\\\/implementing-srs-with-exim-and-sqlite\\\/#listItem\",\"name\":\"Implementing SRS with Exim and SQLite\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/2009\\\/07\\\/29\\\/implementing-srs-with-exim-and-sqlite\\\/#listItem\",\"position\":3,\"name\":\"Implementing SRS with Exim and SQLite\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/category\\\/work\\\/#listItem\",\"name\":\"Work\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/#person\",\"name\":\"Tim Bishop\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Tim Bishop\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/2009\\\/07\\\/29\\\/implementing-srs-with-exim-and-sqlite\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e954b8a434eb09bf9aeb19e62dee801380a15d8eb88101a8ac5d5d6b52184a10?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Tim Bishop\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/2009\\\/07\\\/29\\\/implementing-srs-with-exim-and-sqlite\\\/#webpage\",\"url\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/2009\\\/07\\\/29\\\/implementing-srs-with-exim-and-sqlite\\\/\",\"name\":\"Implementing SRS with Exim and SQLite | Tim Bishop\",\"description\":\"In this post I look at implemeting SRS using Exim and SQLite.\",\"inLanguage\":\"en-GB\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/2009\\\/07\\\/29\\\/implementing-srs-with-exim-and-sqlite\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2009-07-29T23:09:18+01:00\",\"dateModified\":\"2019-05-22T14:48:38+01:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/\",\"name\":\"Tim Bishop\",\"inLanguage\":\"en-GB\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.bishnet.net\\\/tim\\\/blog\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Implementing SRS with Exim and SQLite | Tim Bishop","description":"In this post I look at implemeting SRS using Exim and SQLite.","canonical_url":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/#article","name":"Implementing SRS with Exim and SQLite | Tim Bishop","headline":"Implementing SRS with Exim and SQLite","author":{"@id":"https:\/\/www.bishnet.net\/tim\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/www.bishnet.net\/tim\/blog\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/e954b8a434eb09bf9aeb19e62dee801380a15d8eb88101a8ac5d5d6b52184a10?s=96&d=mm&r=g","width":96,"height":96,"caption":"Tim Bishop"},"datePublished":"2009-07-29T23:09:18+01:00","dateModified":"2019-05-22T14:48:38+01:00","inLanguage":"en-GB","mainEntityOfPage":{"@id":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/#webpage"},"isPartOf":{"@id":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/#webpage"},"articleSection":"Computing, Work, Exim, Sender Rewriting Scheme, SPF, SQLite, SRS"},{"@type":"BreadcrumbList","@id":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.bishnet.net\/tim\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.bishnet.net\/tim\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.bishnet.net\/tim\/blog\/category\/work\/#listItem","name":"Work"}},{"@type":"ListItem","@id":"https:\/\/www.bishnet.net\/tim\/blog\/category\/work\/#listItem","position":2,"name":"Work","item":"https:\/\/www.bishnet.net\/tim\/blog\/category\/work\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/#listItem","name":"Implementing SRS with Exim and SQLite"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.bishnet.net\/tim\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/#listItem","position":3,"name":"Implementing SRS with Exim and SQLite","previousItem":{"@type":"ListItem","@id":"https:\/\/www.bishnet.net\/tim\/blog\/category\/work\/#listItem","name":"Work"}}]},{"@type":"Person","@id":"https:\/\/www.bishnet.net\/tim\/blog\/#person","name":"Tim Bishop"},{"@type":"Person","@id":"https:\/\/www.bishnet.net\/tim\/blog\/author\/admin\/#author","url":"https:\/\/www.bishnet.net\/tim\/blog\/author\/admin\/","name":"Tim Bishop","image":{"@type":"ImageObject","@id":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/e954b8a434eb09bf9aeb19e62dee801380a15d8eb88101a8ac5d5d6b52184a10?s=96&d=mm&r=g","width":96,"height":96,"caption":"Tim Bishop"}},{"@type":"WebPage","@id":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/#webpage","url":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/","name":"Implementing SRS with Exim and SQLite | Tim Bishop","description":"In this post I look at implemeting SRS using Exim and SQLite.","inLanguage":"en-GB","isPartOf":{"@id":"https:\/\/www.bishnet.net\/tim\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/#breadcrumblist"},"author":{"@id":"https:\/\/www.bishnet.net\/tim\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/www.bishnet.net\/tim\/blog\/author\/admin\/#author"},"datePublished":"2009-07-29T23:09:18+01:00","dateModified":"2019-05-22T14:48:38+01:00"},{"@type":"WebSite","@id":"https:\/\/www.bishnet.net\/tim\/blog\/#website","url":"https:\/\/www.bishnet.net\/tim\/blog\/","name":"Tim Bishop","inLanguage":"en-GB","publisher":{"@id":"https:\/\/www.bishnet.net\/tim\/blog\/#person"}}]},"og:locale":"en_GB","og:site_name":"Tim Bishop |","og:type":"article","og:title":"Implementing SRS with Exim and SQLite | Tim Bishop","og:description":"In this post I look at implemeting SRS using Exim and SQLite.","og:url":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/","article:published_time":"2009-07-29T23:09:18+00:00","article:modified_time":"2019-05-22T13:48:38+00:00","twitter:card":"summary","twitter:title":"Implementing SRS with Exim and SQLite | Tim Bishop","twitter:description":"In this post I look at implemeting SRS using Exim and SQLite."},"aioseo_meta_data":{"post_id":"265","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-11-11 09:57:24","updated":"2025-07-14 15:15:04","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.bishnet.net\/tim\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.bishnet.net\/tim\/blog\/category\/work\/\" title=\"Work\">Work<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tImplementing SRS with Exim and SQLite\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.bishnet.net\/tim\/blog"},{"label":"Work","link":"https:\/\/www.bishnet.net\/tim\/blog\/category\/work\/"},{"label":"Implementing SRS with Exim and SQLite","link":"https:\/\/www.bishnet.net\/tim\/blog\/2009\/07\/29\/implementing-srs-with-exim-and-sqlite\/"}],"_links":{"self":[{"href":"https:\/\/www.bishnet.net\/tim\/blog\/wp-json\/wp\/v2\/posts\/265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bishnet.net\/tim\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bishnet.net\/tim\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bishnet.net\/tim\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bishnet.net\/tim\/blog\/wp-json\/wp\/v2\/comments?post=265"}],"version-history":[{"count":21,"href":"https:\/\/www.bishnet.net\/tim\/blog\/wp-json\/wp\/v2\/posts\/265\/revisions"}],"predecessor-version":[{"id":511,"href":"https:\/\/www.bishnet.net\/tim\/blog\/wp-json\/wp\/v2\/posts\/265\/revisions\/511"}],"wp:attachment":[{"href":"https:\/\/www.bishnet.net\/tim\/blog\/wp-json\/wp\/v2\/media?parent=265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bishnet.net\/tim\/blog\/wp-json\/wp\/v2\/categories?post=265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bishnet.net\/tim\/blog\/wp-json\/wp\/v2\/tags?post=265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}